测试学习-111-使用postman进行批量数据的自动化接口测试

前言:

postman是一款简单轻量级的接口测试工具,作为测试人员少不了要和接口打交道,有时是功能测试+接口测试,有时是纯接口测试,接口测试最终要的就是要把接口中的每个字段的有效性和容错性进行测试。等等之类。

1、接口的基本展示。

                                  

以上是接口的大体展示,右图为接口的常用请求方式

2、批量测试数据生成(自动化测试第一步)

关于测试数据的批量生成,已经在本人的上两篇博客中详解,:https://blog.csdn.net/u013521274/article/details/110005978

最终会生成一个csv文件,里面包含了大量的测试数据。

3、postman接口自动化测试

3.1 构造好csv数据列,及常见问题解决

问题一:在构造好数据时,csv数据本身没有问题,但是如果数据中有的ID字段超过了32位,再用Excel或者wps打开时,会默认为数值类型而不是字符串,ID数据就会以科学计数法的形式存在,导致数据变形不可用。详细情况可以看到如下两个图。

为了解决上述问题,一般当构造好数据之后(无论什么形式构造好数据)都不在建议使用Excel或者wps打开,会使用一些常用的编辑器如 editpius  notpad++,记事本来打开。

问题二:postman的数据兼容性问题,

在进行csv数据导入到postman中,准备执行批量数据测试时,因为postman自身的问题,也会产生和问题一中,数据变成科学计数法的问题,这个在postman预览中就能看到。例如下图所示。

   

为了解决问题二

只有放大招了,给每一个数据ID超过32位的数据加上双引号  引起来,就会解决掉这个问题。不用担心postman在读取数据时我们多加的双引号问题,postman会自动忽略。如下图

 数据的问题解决了,接下里才进入主题,自动化测试。

3.2 postman 自动化测试

第一步:在请求体 body 中,将固定的参数变成,变量名,变量名要和csv文件中的列名一 一对应,这样才能保证数据的正常传入。

第二步:在请求体中,Pre-request Script 写代码,参数传入。(注:后来发现这部分不写也行)

//这里的传参代码可写可不写,在body中写好就能自动的获取响应的字段
pm.environment.set("PersonID", data.PersonID);
pm.environment.set("InfoKind", data.InfoKind);
pm.environment.set("SourceID", data.SourceID);
pm.environment.set("DeviceID", data.DeviceID);
pm.environment.set("LocationMarkTime", data.LocationMarkTime);
pm.environment.set("PersonAppearTime", data.PersonAppearTime);
pm.environment.set("PersonDisAppearTime", data.PersonDisAppearTime);

第三步:在请求体中,Test 中写断言

断言的作用就是验证我们的预期结果和实际执行测试的结果是否一致,其中比较重要的字段就是 StatusCode 字段的验证。一般为0 表示正常。

断言代码的作用就是获得 响应体中 返回的各个我们想要的字段数据。然后在进行比对。


//is equal to a string  ---success
pm.test("断言 StatusString: ok 正常", function () {
    var jsonData =JSON.parse(responseBody);
    pm.expect(jsonData.ResponseStatusListObject.ResponseStatusObject[0].StatusString).to.equals("OK, 正常");
});

//验证状态--success
var data = JSON.parse(responseBody);
var status = data.ResponseStatusListObject.ResponseStatusObject[0].StatusCode;
tests[status] = true;

//验证状态码是否为0 --success
pm.test("断言 响应体状态码 0", function () {
    var jsonData =JSON.parse(responseBody);
    pm.expect(jsonData.ResponseStatusListObject.ResponseStatusObject[0].StatusCode).to.eql(0);
});



#以上的断言一般情况下使用一个就可以*/

注意:这里容易出问题的就是断言代码的编写,不同的项目响应体的嵌套和结构是不一样的,这就导致了我们获取statuscode是写得代码结构不一样。

本人在这里也是踩了很多坑,看了很多资料,很多博客。最终总结了一些办法。

常用的一些博客就整理了比如:满足常用的statuscode的获取

https://blog.csdn.net/rechel000/article/details/105136425

https://www.cnblogs.com/xiaozhuxiaozhu/articles/12732608.html

如果响应体的结构太复杂,而你自己有搞不清楚的可以尝试json的格式化工具,以获取上图中的StatusCode 为例

    

这样我们将上图中的StatusCode的 json结构代码,就可以很清楚明白的在断言里获取任意一个字段了

上图json格式转get的链接为:http://www.bejson.com/

3.3 测试数据的自动化执行

3.3.1 打开项目中的文件夹,点击Run

 3.3.2 导入csv 数据 并执行测试

 3.3.3 查看测试数据执行结果

如上图,3个断言的验证,说明数据都执行通过了。

其次,postman有导出测试报告的功能,但是是json格式的不美观,要行生成HTML的测试报告还要另外安装其他的组件,这里就不说了

有问题请留言,看到必回复。

猜你喜欢

转载自blog.csdn.net/u013521274/article/details/110161387