专栏首页软件测试那些事JsonUnit的正则匹配测试

JsonUnit的正则匹配测试

之前写过一篇文章简单介绍了jsonunit 这个非常棒的json断言工具。

测试断言之接口测试断言利器jsonunit

在最近的测试项目中,发现有个接口返回值的errorMsg中包含了时间信息,需要用到正则匹配的断言。

由于官网关于正则匹配的案例只有一个,尝试多写了几个备用

package com.github.jsonunit;

import org.junit.jupiter.api.Test;

import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;

public class JsonUnitTest {
    @Test
    public void TestJsonUnitPattern(){
        assertThatJson("{\"test\": \"ABCD\"}")
                .isEqualTo("{\"test\": \"${json-unit.regex}^A[A-Z]+\"}");
    }

    @Test
    public void TestJsonUnitPatternPrefixChn(){
        assertThatJson("{\"test\": \"甲ABC\"}")
                .isEqualTo("{\"test\": \"${json-unit.regex}^甲[A-Z]+\"}");
    }

    @Test
    public void TestJsonUnitPatternSuffix(){
        assertThatJson("{\"test\": \"甲乙丙丁\"}")
                .isEqualTo("{\"test\": \"${json-unit.regex}^甲.*丁$\"}");
    }
    @Test
    public void TestJsonUnitPatternWildcast(){
        assertThatJson("{\"test\": \"甲乙丙丁\"}")
                .isEqualTo("{\"test\": \"${json-unit.regex}^甲.*\"}");
    }
    @Test
    public void TestJsonUnitPatternWildcastInMiddle(){
        assertThatJson("{\"test\": \"甲乙21:42:36丙丁\"}")
                .isEqualTo("{\"test\": \"${json-unit.regex}甲乙.*丙\"}");
    }
}

顺便记录一下使用的版本

    <dependency>
        <groupId>net.javacrumbs.json-unit</groupId>
        <artifactId>json-unit-assertj</artifactId>
        <version>2.17.0</version>
        <scope>test</scope>
    </dependency>

这个包附带了assertJ,并且需要有一个类似gson,gackson等gson解析包。很遗憾fastjson目前还不支持。

本文分享自微信公众号 - 软件测试那些事(antony-not-available),作者:风月同天测试人

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 录制回放实现测试用例自由

    定义了 @Pointcut("execution(public * io.metersphere..controller...(..))") 这个切面,表...

    Antony
  • 看,Mockito如何搞定Builder模式的Fluent API

    建造者模式Builder是一种常用的设计模式,用于构建不同的产品类。 如有以下的Builder

    Antony
  • Mockito系列-开篇

    开启Mockito单元测试系列,这是第一篇。本文将介绍如何用Mockito来mock一个股票服务接口,在服务尚未实现的情况下,验证一个客户股票投资组合的计算逻辑...

    Antony
  • Go语言中字符串的查找方法小结

    1.func Contains(s, substr string) bool这个函数是查找某个字符是否在这个字符串中存在,存在返回true import ( ...

    李海彬
  • hbuilder打包APP

    Rattenking
  • 云原生 - 体验Istio的完美入门之旅(一)

    随着微服务架构的流行,服务网格技术获得了业界的广泛关注,作为实现云原生的重要积木,各大厂商也纷纷开始布局,Amazon在2019年4月份推出了App Mesh;...

    justmine
  • 比起WE大会“救命的AI”,这个AI已经悄悄进入人们的学习中

    “未来人工智能要进一步发展的话,就需从脑科学得到启发,包括机器学习过程,怎么从脑启发的这个概念来设计新的计算模式,新的类似人脑的神经元结构的器件、芯片,甚至是机...

    腾讯智慧教育
  • JNI之路径初探---2

    上一篇博客写的是Java调用C、C++的例子,本篇就演示一下C、C++怎么调用Java的属性和方法。

    萬物並作吾以觀復
  • TiDB on Kubernetes最佳实践

    随着 Kubernetes(K8s) 的全面成熟,越来越多的组织开始大规模地基于 K8s 构建基础设施层。然而,考虑到数据库在架构中的核心地位与 K8s 在有状...

    CNCF
  • TiDB on Kubernetes 最佳实践

    随着 Kubernetes(K8s) 的全面成熟,越来越多的组织开始大规模地基于 K8s 构建基础设施层。然而,考虑到数据库在架构中的核心地位与 K8s 在有状...

    PingCAP

扫码关注云+社区

领取腾讯云代金券