接口测试实战接口测试之断言实战

Posted 黑黑白白君

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口测试实战接口测试之断言实战相关的知识,希望对你有一定的参考价值。

前情:

《【接口测试实战(零)】接口测试简介》

《【接口测试实战(一)】搭建接口测试环境》

《【接口测试实战(二)】根据接口文档使用postman测试》

《【接口测试实战(三)】接口测试用例的编写》

《【接口测试实战(四)】根据接口测试用例进行测试》




1)什么是断言?

断言其实就是预期与实际结果的判断,即检查点。

  • 如果预期==实际,则用例通过,写到报告中。
  • 如果预期!=实际,则用例失败,写到报告中。

断言通常是在HTTP响应中判断,一般看状态码和Body。

HTTP响应的构成:
在这里插入图片描述

  • 状态行
  • Headers
  • Body

2)postman的Tests功能

POSTMAN官方文档中对于Tests的描述
"You can write test scripts for your Postman API requests in javascript. Tests allow you to ensure that your API is working as expected, to establish that integrations between services are functioning reliably, and to verify that new developments haven’t broken any existing functionality. "
(您可以使用 JavaScript 为 Postman API请求编写测试脚本。通过测试,您可以确保 API 按预期工作,确定服务之间的集成运行可靠,并验证新开发没有破坏任何现有功能。)

本质上是javascript code,可以为tests object设置values。

  • 这里使用描述性文字作为key,检验body中的各种情况,当然你可以创建任意多的key,这取决于你需要测试多少点。
  • tests也会随着request保存到collection中。
  • 需要在request的test中创建了test后,再进行request,test的结果在body的test中查看。
  • postman每次执行request的时候,会执行tests。测试结果会在tests的tab上面显示一个通过的数量。
  • postman的测试是运行在沙箱环境,是与app独立的。查看什么在沙箱中是可用的,参见Sandbox documentation。
  • Snippets用于快速添加常用的测试代码。可以自定义snippets。

3)实战:通过断言测试7日天气接口

3.1 七日天气接口简介

接口来源:http://www.tianqiapi.com/index

包含基本天气、温度、风力风向等,可按地名、城市编号、IP查询。

请求方式及url:

请求方式:GET

接口地址:https://tianqiapi.com/free/week

请求参数说明:

参数名必选类型说明备注(示例)
appidstring用户appid注册开发账号
appsecretstring用户appsecret
cityidstring城市ID请参考 城市ID列表

响应参数说明:

参数名类型说明备注
cityidString城市ID
cityString城市名称
update_timeString更新时间
dateString预报日期

3.2 设计断言

从响应内容做断言。比如可以断言:

  • 状态码等于200
  • city=“深圳”
  • 返回7天的天气情况

3.3 断言的应用

  • 处理断言的地方:Tests

在这里插入图片描述

  • Tests tab:可以手动输入 JavaScript 或使用代码编辑器右侧看到的代码段(Snippets)。
  • Snippets:断言常用的函数。

填写断言代码并进行测试:

一个完整的接口测试,包括:请求->获取响应正文->断言。
在这里插入图片描述
可以看到一共有Tests的断言3个,点击Send,发送请求,在Test Results内可以看到PASS表示断言通过,FAIL表示断言失败。

注意:

  1. 这边为了看fail的情形,把最后一个断言的判断改掉了,实际上是3个PASS。
  2. 截图左侧是console,从view->Show Postman Console打开。
  • 判断statusCode的值是200:

    在SNIPPETS中,有一项”Status code:Code is 200”,这个就是判断HTTP返回状态码是否为200。

    pm.test("状态码必须是200", function () {
        pm.response.to.have.status(200);
    });  //判断状态码为200
    
    • pm.test中的test是一个内置对象(函数),"Status code is 200"是指为这个断言起个名称叫”Status code is 200”,这个名称可以自行修改。
    • pm.response.to.have.status(200)中的responseCode是内置对象,responseCode对象中有个属性是code,是指HTTP状态码的code,判断code是否为200。

  • 判断返回的为7日的数据:

    var jsonData = JSON.parse(responseBody);  //
    console.log(jsonData.data.length);  //记日志,作调试
    tests["返回7日的数据"] = jsonData.data.length === 7;
    
    • JavaScript 使用关键字 var 来定义变量, 使用等号来为变量赋值。
    • 使用 JSON.parse() 方法将数据转换为 JavaScript 对象。解析前要确保数据是标准的 JSON 格式,否则会解析出错。
    • length 属性可设置或返回数组中元素的数目。

4)Postman pm 对象

pm 对象还提供了测试相关功能:

  • pm.test 函数

    用来生成一个测试,可以输入测试标题,并加入各种断言。
    • 断言全部成功则测试成功,某一个断言失败则测试失败。
    • 一个请求可以添加多个测试函数。
  • pm.expect 函数

    用来生成各种断言。
  • pm.response 对象

    提供了很多内置的断言语句。

详情可参考:Postman pm 对象 - 测试相关功能


5)postman常见断言方法

后续补充。

暂可参考https://www.cnblogs.com/suim1218/p/8931159.html
https://www.cnblogs.com/ceshi2016/p/7281361.html



【部分内容参考自】

  • postman logoLearning Center:https://learning.postman.com/docs/writing-scripts/test-scripts/
  • Postman接口测试之断言:https://www.jianshu.com/p/5e69f2a304f8
  • postman的使用方法详解!最全面的教程:https://www.cnblogs.com/jpfss/p/9082542.html

以上是关于接口测试实战接口测试之断言实战的主要内容,如果未能解决你的问题,请参考以下文章

接口测试实战接口测试之token鉴权实战

接口测试实战接口测试之cookie实战

接口测试实战postman之Collections和数据驱动测试实战

接口测试实战接口测试之sandbox(沙盒)

接口测试实战postman之变量与沙盒实战

接口测试实战接口自动化之持续集成(postman+newman+jenkins)