利器 | REST Assured 实践(二):断言实现


在上一篇文章中,我们初步探讨了 REST Assured 的应用实践,还有很多丰富的用法需要慢慢探索研究。而 REST Assured 提供的完整断言手段,是测试工程师最常用最重要的功能之一。断言该如何使用呢?

这里以 rest-assured 官方给的一个示例做演示学习

{
"lotto":{
 "lottoId":5,
  "winning-numbers":[2,45,34,23,7,5,3],
   "winners":[{
      "winnerId":23,
         "numbers":[2,45,34,23,3,5]
          },{
             "winnerId":54,
                "numbers":[52,3,12,11,18,22]
                 }]
                 }
                 }

在本地使用 python -m CGIHTTPServer 临时搭建起一个服务:

根节点.子节点
1)我们可以使用根节点.(点)子节点的方式一层层的找下去,例如我们需要对lottoId等于 5 进行断言:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Rxy50cS-1650514201013)(https://ceshiren.com/uploads/default/original/3X/3/7/3770a78cf109b1cc8eb443d8a5472b9ba3653b86.png)]

@Test
void testGPath(){
     given().
          when().
                       log().all().get("http://127.0.0.1:8000/restAssured.json").
                            then().
                                         log().all().body("lotto.lottoId",equalTo(5));
                                          }

2)如果我们想要断言winners数组下面的winnerId,检查23和54是否包含其中,可以如下lotto.winners.winnerId写法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WqCqwmaY-1650514205932)(https://ceshiren.com/uploads/default/original/3X/d/4/d4e8ad014ed786cb61ea038719908674e4ad04fe.png)]

@Test
void testGPath(){
    given().
        when().
                    log().all().get("http://127.0.0.1:8000/restAssured.json").
                        then().
                                    log().all()
                                                .body("lotto.winners.winnerId",hasItems(54,23));
                                                }

索引取值

1)如果我们想要取某些相同字段中的某一个,可以使用类似索引的方式获取,例如想要断言 winners 数组下面的 winnerId 的第一个值是否为23,可以使用 lotto.winners.winnerId[0],写法如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5maZ7b3D-1650514210826)(https://ceshiren.com/uploads/default/original/3X/a/3/a3aa8f53907041fdbe8035a0005b64b506b7d607.png)]

@Test
void testGPath(){
    given().
        when().
                    log().all().get("http://127.0.0.1:8000/restAssured.json").
                        then().
                                    log().all()
                                                .body("lotto.winners.winnerId[0]",equalTo(23));
                                                }

2)如果我们想要取某些相同字段中的最后一个,可以使用 -1 作为索引,例如断言断言 winners 数组下面的 winnerId 的最后一个的值是否为 54

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xNniuyxj-1650514215993)(https://ceshiren.com/uploads/default/original/3X/0/c/0cd8179df05d0e5c04adafb5f2b9e4d750e3788f.png)]

@Test
void testGPath(){
    given().
        when().
                    log().all().get("http://127.0.0.1:8000/restAssured.json").
                        then().
                                    log().all()
                                                .body("lotto.winners.winnerId[-1]",equalTo(54));
                                                }

findAll
有时候我们需要获取符合某些条件的结果来进行断言,这里 findAll 可以帮助我们实现,我们可以在 findAll 方法中写筛选条件,例如我们想取 winnerId 的值在大于或等于 30 小于 60 之间的结果进行断言,具体写法如下:

@Test
void testGPath(){
    given().
        when().
                    log().all().get("http://127.0.0.1:8000/restAssured.json").
                        then().
                                    log().all()
                                                .body("lotto.winners.findAll{ winners -> winners.winnerId >= 30 && winners.winnerId < 60}.winnerId[0]",equalTo(54));
                                                }

find
find 的用法与 findAll 基本一致,只是 find 默认取匹配到的第一个:

@Test
void testGPath(){
    given().
        when().
                    log().all().get("http://127.0.0.1:8000/restAssured.json").
                        then().
                                    log().all()
                                                .body("lotto.winners.find{ winners -> winners.winnerId >= 30 &
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值