postman使用:接口自动化简单案例介绍(一)

一、综述

Postman用于接口测试,常见get接口、post接口测试大家应该都了解了,本次是重点介绍自动化相关知识。以post请求为案例,先简单叙述post请求参数的格式,然后简述collection、runner、pre-request script\tests等模块的使用。

二、post请求简介

接口请求方式:post

接口请求路径:从接口文档中可得到

接口请求参数的类型:接口文档得到

接口请求参数:接口文档得到

1.参数类型:form-data/x-www-form-urlencoded/row/binary

①form-data

就是multipart/form-data,它将表单的数据组织为Key-Value形式,用分隔符boundary(boundary可以任意设置)处理成一条消息。由于有boundary隔离,所以既可以上传文件,也可以上传参数。使用httpclient模拟请求时的代码如下(只传递图片时):

 postman使用:接口自动化简单案例介绍(一)

② x-www-form-urlencoded

就是application/x-www-form-urlencoded,将表单内数据转换为Key-Value。请求主体是键值对,包装请求体用的方法是UrlEncodedFormEntity()。

postman使用:接口自动化简单案例介绍(一) 

③ row

可以上传任意格式的【文本】,可以上传text、json、xml、html。

 

其中常见格式application/json,使用HTTPClient模拟请求-主体为application/json的代码如下,请求主体是json串,包装请求体的方法是StringEntity()。

postman使用:接口自动化简单案例介绍(一)

使用HTTPClient模拟请求-主体为text/xml代码如下:

postman使用:接口自动化简单案例介绍(一) 

④binary 

就是Content-Type:application/octet-stream,只可以上传二进制数据,通常用来上传文件。由于没有键值,所以一次只能上传一个文件。

注意: 

Multipart/form-data与application/x-www-form-urlencoded:
 1.是html中form表单的两种形式;
 2.application/x-www-form-urlencoded是默认的MIME内容编码类型,它在传输比较大的二进制或文本数据时效率极低。
 3.multipart/form-data既可以上传文件等二进制数据,也可以上传表单键值对,只是最后会转换为一条信息,当设置multipart/form-data时,http会忽略contenType属性。
 4.application/x-www-form-urlencoded:只能上传键值对,不能用于文件上传。不同的field使用“&”区分开。
 5.两个类都实现了HTTPEntity接口。详情参见:http://www.jianshu.com/p/6c5b96af1ad6

三、collection简介

Collection 是 requests的集合,在做完一个测试的時候, 你可以把這次的 request 存到特定的 Collection

里面,如此一來,下次要做同样的测试时,就不需要重新输入。而且一个collection可以包含多条request,如

果我们把一个request当成一个test case,那collection就可以看成是一个test suite。通过collection的归

类,我们可以良好的分类测试软件所提供的API.而且 Collection 还可以 Import 或是 Share 出來,让团队里

面的所有人共享你建立起來的 Collection。

postman使用:接口自动化简单案例介绍(一)

四、runner 

此模块可以用来做简单的接口压力测试,可以通过跑已建好的collection做日常接口回归测试。

postman使用:接口自动化简单案例介绍(一)

点击后,就可以选择collection进行自动跑接口。如果做压测,要设置对应参数。非本次重点,可自行百度。

五、 pre-request script\tests

Postman支持编写测试脚本(js语言),可以快速的检查request的结果,并返回测试结果。其中pre-request script 常用于处理当前接口的参数,可进行参数化。tests常用于校验当前接口返回数据是否正确,也可用于接收当前接口返回的参数,然后创建变量作为下一接口的请求参数。

1.接口间的参数传递使用

此次涉及两个接口:登录和查询接口,需要将登录接口返回的身份证号码,作为第二个查询接口的请求参数,并对查询接口返回的结果进行简单校验。

执行完登录请求后,返回参数如下:

postman使用:接口自动化简单案例介绍(一)

A.需要在登录接口的tests中进行代码编写 ,从返回参数获得idcard,然后创建变量。

代码如下:

var jsonData = JSON.parse(responseBody);
pm.environment.set("idcard", jsonData.body.userinfo.idcard);

注意:

1.变量分为全局变量和局部变量。(但是作用范围我不确定,望好心人告知。如全局变量是说collection1和collection2都会有作用还是在哪个collection新建的才有作用,局部变量的作用域是哪,未知)

2.还有一种手动创建变量的方式:

postman使用:接口自动化简单案例介绍(一)

B.在查询接口使用刚刚创建的变量,使用格式为{{变量名}}

postman使用:接口自动化简单案例介绍(一)

C.对查询接口的返回参数进行简单的断言

在查询接口的tests窗口,添加对应的代码。

pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("填写此接口返回的部分字符串内容");
});

pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

对于断言这块,可以参考文章: https://learning.getpostman.com/docs/postman/scripts/test_examples/

                                                   https://www.cnblogs.com/JHblogs/p/6418802.html

                                                   https://www.cnblogs.com/hanmk/p/10171062.html

其他案例参考:https://segmentfault.com/a/1190000005055899

                          https://testerhome.com/topics/6555