接口自动化测试--基于Postman工具基础

前面章节我们用Postman工具设计测试用例对接口进行了测试,这个过程需要人工执行case,并且需要人工判断response返回的结果是否与预期结果一致,如果api众多,人工测试验证的效率就是很低的,因此我们需要引入自动化测试的手段,来提升测试效率。

那如果用自动化测试,如何判断接口返回结果是否正确呢?这就需要在程序或者工具中设置“检查点(或者叫断言)”来判断返回的结果是否与检查点设置的值或者规则一致,如果一致,则测试通过,如果不一致,则测试不通过。另外,在用Postman工具测试接口鉴权的部分,我们是通过手工获取登录接口返回的token值作为door接口的授权头信息,在实际测试中,token是有一定实效的(我们代码中设置的token有效期为24h),如果超过有效期,token值就需要重新获取,这样在测试时就还需要人工介入,没法实现完全的自动化测试。

因此,要实现接口的自动化测试,需要具备以下4个能力:

  • 测试数据参数化
  • 测试数据关联
  • 添加“检查点”对返回结果检查验证
  • 自动执行测试(定时执行或提交代码触发执行),并生成测试报告

接下来,我们仍然以Postman工具为例,来看看其是如何实现上述4个功能的(自动化测试部分会在下一章节单独介绍)

1. 测试数据参数化

测试数据参数化的方式主要有两种,分别是:变量引用和内置函数

1)变量引用

Postman中设置变量的方式有两种,分别是环境变量和全局变量

  • 环境变量:只在当前环境有效的变量
  • 全局变量:所有环境都有效的变量

环境变量优先级高于全局变量:比如环境变量有一个IP地址,全局变量也有一个IP地址,选择了某个环境后,Postman会优先选择环境变量中的IP地址作为参数值

环境变量和全局变量可以通过【Manage Environments】设置,
点击【Manage Environments】按钮,如下图所示:
postman环境设置

打开“管理环境”页面,如下图所示:
点击【Add】按钮即可添加不同的环境,此处我们添加Test、Pre、Online 3个环境,分别代表测试环境、预发环境、线上环境,分别点击Test、Pre、Online,即进入对应环境环境变量编辑页面
点击【Globals】即可打开全局变量添加页面,增加全局变量
postman添加环境

也可以用脚本添加变量,示例如下:

//设置环境变量
pm.environment.set("variable_key", "variable_value");
//设置全局变量
pm.globals.set("variable_key", "variable_value");

Tips:
上面脚本放在Pre-request Script中,Pre-request Script与Tests Scripts一样,都是javascript,调用时可以用两个{{}}访问环境变量。

下面分别举一个环境变量和全局变量的例子

❶例子1:不同环境域名切换

按上述环境变量设置方法,分别在Test、Pre、Online环境变量编辑页面VARIABLE增加字段host,INITIAL NAME分别填入下述域名信息

testenv.test.com
preenv.test.com
onlineenv.test.com

如下图所示:
postman添加测试环境域名

在C:\Windows\System32\drivers\etc\hosts文件中增加如下内容:

127.0.0.1  testenv.test.com
127.0.0.1  preenv.test.com
127.0.0.1  onlineenv.test.com

注:以上域名为假域名,都指向127.0.0.1本机地址

完成上述操作后,Postman中修改URL中的ip为{{host}},修改后的URL形如如下示例:

http://{{host}}:5000/login

点击下图红框右上角位置的三角按钮,可以切换不同的环境,不同环境中,调用了不同环境的域名变量,这样我们就可以模拟在不同环境中进行接口测试
postman环境

❷例子2:全局密码

3.2章节"接口测试进阶--加密验签"篇case1中,我们通过在Pre-request Scripts中对密码进行MD5加密(如下所示),并将它赋予名为password的全局变量,在请求参数中通过{{password}}就可以调用到加密后的密码密文。

//字符串进行md5加密
var strmd5= CryptoJS.MD5("a123456").toString();
//将加密密码赋予password全局变量
postman.setGlobalVariable("password",strmd5)

上面例子中,密码设置为了全局变量,不论切换到哪个环境,均是有效的,如果你想查看环境变量和全局变量的值到底是什么,可以点击工具右上角眼睛形状的【Environments quick look】按钮来预览。

2)随机值

Postman工具提供了丰富的内置函数用以生成随机值或时间戳等特定的数据,举例如下:

  • {{$guid}}:添加一个GUID(如: aa002-44ac-45ca-aae3-52bf19650e2d)
  • {{$timestamp}}:当前的时间戳,精确到秒
  • {{$randomInt}}:添加0和1000之间的随机整数

如果你想查看更多Postman提供的函数,可在参数值Value的输入框中输入"{{",即可弹出如下浮层框,右侧是各个随机值的说明,如下图所示:
postman随机值

2. 测试数据关联

“3.1接口测试进阶-认证鉴权”章节case6中,我们介绍了Postman工具中手工获取返回token值作为door接口的授权头信息,在实际测试中,token是有一定实效的,我们代码中设置的token有效期为24h,如果隔天再测试,token值就需要重新获取,这样测试就会比较麻烦,那有没有更方便的获取token值的方法呢?当然是有的,Postman工具中提供了Tests功能,在这个里面就可以写入获取token的代码,这个过程如下:

  • 请求登录接口,返回token
  • 获取返回的token信息,并

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

<p> 本专刊共五章 21 篇正文及 5 个对应的 GitHub 项目,主要介绍了接口测试基础知识及测试用例设计方法,认证鉴权、加密验签,自动化测试,安全性测试,性能测试等内容,每一章节都有代码实例来剖析其原理,并提供了一个完整电商系统的代码,可以直接实操演练,让你知其然知其所以然,轻松搞定接口测试。加入专刊,你就加入了一大群志同道合的优质测试人圈子,同时还有和作者及作者的朋友们互动交流的机会。 本专刊购买后即可解锁所有章节,故不可以退换哦~ </p> <p> <br /> </p>

全部评论
这是什么原因呢,没找到解决方案😣
点赞 回复 分享
发布于 2021-04-15 17:29
newman run AutoTest_nowcode.json -e test_environment.json -r htmlextra --reporter-html-export htmlReport.html,生成的报告格式不对,是什么原因呢
点赞 回复 分享
发布于 2021-01-11 17:16
这里是每隔15分钟吧
点赞 回复 分享
发布于 2020-12-29 16:55

相关推荐

勇敢的突尼斯海怪选钝...:楼主这拒意向话术好得体呀 !求问HR回复态度咋样呀
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务