目录
文章目录
前言
一、发送一个HTTP请求
1.创建集合
2.添加HTTP请求
3.填写网址的请求信息并且发送
二、Postman 断言
1.响应码断言
2字符串断言
2.JSON断言
三、Postman关联
四、Postman参数化
前言
接口测试简介:Postman是用于网页调试和接口测试的工具,在进行接口测试的工作中,Postman能模拟客户端发送HTTP请求至服务器,同时能够接收服务器返回的HTTP响应,数据人员通过验证接收到的响应数据是否与预期数据值一样,从而判断接口是否有缺陷.
HTTP请求报文解剖
HTTP Request :HTTP请求
Request Line:请求行
Header:请求头
Request Body:请求体
HTTP请求报文由3部分组成(请求行+请求头+请求体)
一、发送一个HTTP请求
1.创建集合
在My Workspace,我的工作位置,点击collection,之后点击Blank collection,创建一个空白集合。
2.添加HTTP请求
在创建的空白集合处,先把集合命名为FirstTest,防止混淆,养成好习惯,(集合命名可以中文但是最好英文,防止特殊情况报错)右边三个点,点开后,点击Add request,添加一个请求。再给请求命名。
3.填写网址的请求信息并且发送
第一步,在这个位置改我们的请求名,第二步,在我们添加的请求处,选择GET请求方法第三步,添加网址,第四步保存,第五步sand发送。发送成功就可以看到Body,把格式换成JSON,可以得到请求的内容。URL:blog.csdn.***/2301_81080769,这个是csdn的网址。
二、Postman 断言
断言是程序中的一种逻辑判断式,目的是在验证软件开发的预期结果与实际结果是否一致,编写代码时,通常做一些假设,断言目的是捕捉这些假设。
1.响应码断言
HTTP状态码(响应码)是用来表示HTTP请求是否已经完成,HTTP状态类型一个分为五大类“消息响应、成功响应、重定响应、客户端错误”,所有状态码第一个数字代表了响应的五种状态之一。
HTTP状态码首字母表示的意思大体如下:
1××:消息响应
2××:成功响应
3××:重定响应
4××:客户端错误
5××:服务器端错
这里我们第一步点击Scipts,进入当前页面,然后点post-response,这个意思是发布响应,意思是请求发送并收到响应后做什么。(Pre-request的意思是在发送请求前执行的代码脚本。)Snippets,点开这个里面是Postman自带的代码模版,选择第一个就是响应码断言。出现了代码在Scripts中,status code is 200,这部分是我们的测试名称,是字符串的形式,可以随意更改。这里我们未更改,意思是响应码为200。
2.字符串断言
1.还是点击Snippets,然后点击第二个代码,这个代码的含义是字符串断言。
2.这个“Body matches string”是测试名称可更改,这个字符串断言的意思是,在Body中有没有“博客”这两个字。text是文本的意思。测试我们的网页里面是否有“博客这两个字”。
3.JSON断言
JSON 的定义
JSON (JavaScript Object Notation) ,是一种轻量级的数据交换格式。它的使用范围很广,并成为 ECMA 标准,可以被使用在多种编程语言中,用于前后端之间的数据传输、存储和交换数据。可以说是“用更少的编码,有更快的处理速度”,所以深受广大程序员的喜爱。
JSON 的数据是由键值对组成的,其中键值对之间使用逗号分隔。在 JSON 中,键和值都必须使用双引号引起来。
JSON 的含义和类型
JSON 用于 JavaScript,把任何 JavaScript 对象变成 JSON,即把这个对象序列化成一个 JSON 格式的字符串,然后通过网络传递给其他计算机。JSON 格式的字符串由双引号 “ ” 包裹,由键值对组成,键和值之间使用冒号 : 分隔,键值对之间使用逗号 , 分隔。值可以是字符串、数字、布尔、null、数组或对象等类型。
在 JSON 中,常见的数据类型有:
字符串:JavaScript 中的string,用于表示文本信息,包含反斜杠 \ 转义。
原文链接:https://blog.csdn.***/Jernnifer_mao/article/details/132523623
JSON的概念和用法,相关知识
新建一个请求,(因为之前的请求Body中的JSON格式不好判断键值对。)这个请求是查询电话号的信息。查询的电话号为参数,写到params里面,显示在URL里,点Body下面的格式,选择JSON,JSON格式是键值对的形式。网址:https://cx.shouji.360.***/phonearea.php
然后点Scripts,在Snippets中,第三行的位置是断言的代码,这里的jsonTest,是测试名可以修改,data中包含province,province对应的是吉林省,所以jsonData.data.province等于吉林省。
(真正测试的时候是为了检查要测试的内容是否有问题,符合预期。已知键值对,然后测试Body中是否真的存在。)
pm.test("jsonTest", function () {
//把返回的数据以Json的格式保存到jsonData中
var jsonData = pm.response.json();
//jsonData是返回的数据,中的data里包含province目的让它等于"吉林省"
pm.expect(jsonData.data.province).to.eql("吉林省");
});
三、Postman关联
在接口测试中,关联是指两个或两个以上2接口互相依赖的关系,例如,某个接口请求地址参数是另一个接口的数据,说明两个接口存在关联关系,在使用Postman做接口测试时,实现接口关联的方法是在Postman中设置全局变量或环境变量。
在Postman中可以有多个环境变量但是只能有一个全局变量,环境变量只能在特定测试环境中使用,全局变量作用于整个Postman,在环境变量和全局变量中设置同一个变量,环境变量的优先级更高。
1.新建集合和请求,并且命名,添加查询天气接口。URL:http://www.weather.***.***/data/sk/101010100.html
2编写实现接口连接的核心代码。
var jsonData = pm.response.json()
第一行代码获取响应结果中的数据,并将数据转换为JSON格式数据保存到变量jsonData中。
var city = jsonData.weatherinfo.city
第二行代码用于从响应结果中提取城市名称。
pm.globals.set("glb_city",city)
第三行代码用于响应结果中的城市名称保存到全局变量"glb_city"中。
全局变量gib_city自动保存到Globals界面,点击Environment,Globals,进入当前页面,glb_city,北京,就会出现,全局变量值对应的城市就是Body中JSON格式对应的city,成功将查询天气接口响应结果中的城市名保存到Postman的全局变量gib_city中。
新建集合baidu再添加一个HTTP请求命名city,添加百度搜索接口,请求方法GET。在4中添加参数,wd是对应城市的参数头,可以通过百度搜索“北京”看链接里wd=北京,因为全局变量已经被设置为北京,这里wd的对应位置可以直接写全局变量。和直接写北京是一样的,因为全局变量对应北京。之后save保存,send发送。
响应结果如下图。
四、Postman参数化
在接口测试中,参数化是将测试数据组织到数据文件中,测试不同数据,使用参数化,提高脚本复用率。
首先是不用参数化的步骤,依旧是创建集合,然后新建请求命名,添加网址http://cx.shouji.360.***/phonearea.php,添加要查询的电话号。
换成JSON格式,方便观察,使用JSON断言。
接下来我们用JSON断言来测试手机号。点击Scripts页面,依旧是Post-response界面写断言代码,蓝色方框部分是JSON断言中的源代码,作为一个解释参考,运行时需要删除。观察图片里2,3,sp在data的里面,所以图片4中的jsonData.value中的value需要写成data。sp这样子,jsonData.data.sp,eql是等于的意思,把给的格式中的100换成我们要测试的内容,例如营业厅代表的sp是否为电信。
如果手机号是电信的情况下,通过,不是则不通过。根据我们写的代码是通过的。
这是断言一个手机号时的操作,利用了JSON断言。如果想判断多个手机号的运营厅是否都和我们的预期一致。添加起来太麻烦,要写很多手机号的参数和JSON断言。这个时候我们用到了参数化。
参数化是将我们需要断言的数据储存到文件中,一起进行断言。
如何储存数据?格式是怎么样的?
首先在电脑桌面右键点击新建,之后添加一个文本。把文本名字命名为mobile_test01.txt ,后缀名为txt,然后填写需要断言的数据。(这里的逗号必须是英文的。)
储存文件 变量mobile表示手机号,变量operator表示手机运营商。
(参数化支持的格式是CSV和JSON文件的格式),csv的编码为UTF-8,这里还得更改编码,然后需要把后缀名改为csv。在记事本写好改变编码设置为UTF-8,把文件扩展名从.txt修改为.csv。
最后得到文件mobile_test01.csv
请求体改为number={{mobile}},这个mobile参数体对应的是文件里的一列,这一列是手机号,手机号对应的operator是运营商,如果对应的参数写不对,就会断言不符合预期就会显示不通过,因为人家网页肯定是对的用来拿来练习,不可能有bug,所以不通过可能是自己写错了。
1是参数化要用到的代码
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.data).to.have.property('sp').that.equals(data.operator);
});
sp对应营业厅,对应文件里的operator。后面那个data对应的是文件数据,和之前data的含义不同。所以data.operator的含义是文件数据中的operator。
(有几个值得注意的点就是这里请求体是{{mobile}},他的含义是数据的第一列对应的手机号,不是文件名。文件名如果是mobile会报错。如果把文件里的mobile换掉,operator也换掉,把对应在postman中的也一起改了也可以,这里文件名是mobile_test01)
不能点send,通过导入文件发送请求,集合名称双击。之后点run。
选择要运行的请求,添加需要执行的文件。
在lterations的位置上,有几个电话号写几,四个号码所以运行4次,如果写5,就会重复运行第一个代码。这里默认是有几个需要运行的就是几次。
结果图如下。运行了四个电话号的结果,而且都通过了。
json文件就是把mobile和operator写成json键值对格式。
然后同一方法运行,这次选择的文件是json格式的,然后把运行次数从4改成1,观察结果发现只运行一个请求。
结果如图只运行了一次。
把运行次数改成5。
运行5次,第五次运行的结果和第四条相同。
把运行次数改成6。运行6次,第4,5,6次的运行手机号相同。(得出结论,运行的次数超出测试数据的量,就会反复执行最后一个测试数据。)