postman断言
每一个用例唯一的对应一个请求数据;
断言就是代替人工,实现工具代替人工自动判断预期结果和实际结果是否一致;
使用postman如何去实现断言?
响应的数据最重要的是响应报文,状态码和响应体;
所以说返回的响应状态码是必须做出判断的;一般都是200的状态码
判断响应体,一个是判断响应体是否包含某个字符串,一个是判断响应体中的key是否使是们预期的value值,这些都是使用断言的方法;
断言--响应状态码
这里是断言书写的位置,但是这里不是专门用来书写
断言列表是可以手动的生成的;
点击就会生成对应的左侧代码(图中用来去断言响应状态码)
图中的代码是用JavaScript写的,作用是为了断言响应状态码是否为200
pm代表的是postman的一个实例,有了实例之后就可以进行调用方法,test是实例的测试方法;
参数是可以修改的,不会影响断言的结果;
匿名函数就是指没有函数名花括号里面的就指的是函数体,所以整个里面就是叫做匿名函数调用;
上面代码里面的意思就是:响应结果当中应该是有响应状态码200,200是指的是预期结果,不是实际结果;
是在这里查看响应结果!!查看断言,绿色代表断言通过,红色表示断言失败
这一段只是一段提示信息,没有什么实质性的作用,是显示给用户断言结果的提示性的文字
可以根据需求去修改字符串中的文字
下面的才是在做真正的断言!!!!
断言包含字符串
断言包含字符串是在响应体当中去判断的,需要记忆大概;
一个test请求当中可以有多个请求断言;
选中一个请求,ctrl+d,可以进行复制请求
except的意思就是期望
期望在postman的响应结果当中应该包含XXX(这个就是预期结果),实际需要替换成自己需要的字符串信息。
断言json数据
其中,value对应的是键值对中的键,后面括号中的内容对应的值是值
js中var定义变量
将整个json响应体赋值给jsondata
这行代码要记住
pm的意思就是postman
eql后面的值必须完全相同 否则就会返回报错
postman断言工作原理
工作原理是为了给下面的关联做铺垫
postman内部是看不到的,但是要想象出来;
界面中的内容是已经写好的,是确实存在的,是界面显示出来的数据-----点击按钮发送请求(send)
服务器接收到http请求进行解析,解析完成组织响应,服务器将数据回发,此时这个过程当中,断言并没有参与进来,因为断言是对响应结果进行断言的;断言是在收到http的响应包之后进行的;
回发的响应结果是先进入postman内部,在内部先进行http的响应体的解析;在包中拿到状态码和响应体;这个过程要执行tests中的代码;
tests中代码的执行要再http响应的时候解析完响应包的时候再执行
最后显示响应结果在postman界面当中!!!
这其中要明白test中代码的执行时间
postman关联
当接口和接口之间,有依赖关系,需要借助于postman关联技术:
例如登录接口返回的令牌数据,被添加员工接口所依赖;
A和B之间是有接口关系的,B接口的数据被A接口所依赖;(B要产生数据供A接口所使用)
B中的数据要想给A所使用,需要通过公共容器才可以(把公共数据放在容器到当中);公共容器在postman中通过变量来接收,变量可以是环境变量,可以是全局变量;
然后A从这个公共容器当中获取值;
这样就完成了
提取响应数据,设置环境变量,引用环境变量;
关联--核心代码
使用环境变量做容器;也可以使用环境变量做容器;
从容器中提取数据;
关联--创建环境
全局变量是在整个postman中都可以使用的变量, 不需要单独的去创建环境(只要是postman启动,就已经是创建好了)
环境变量是在特定的环境中才能使用的变量,需要给此变量单独创建环境;
如图所示的两个位置可以创建新环境~~
对号和右上角都能帮助我们识别是什么环境,什么样的环境被选用
关联--练习
响应结果中的city是我们需要的响应结果数据
获取的响应结果要转为json格式:.json
将相应结果保存到全局变量当中
写第二个请求,最好是不要写死,用两个花括号中间写变量;这里是在获取全局变量的值;
将鼠标悬停,上面是能看到全局变量的值的,证明获取成功;
如果这里的值是null说明写错了,不用去发送请求;
关联案例--思路分析
使用postman关联技术,实现添加员工接口;
登陆成功,返回的令牌被添加员工接口依赖
必须登录成功,否则就没有令牌
postman参数化支持的数据文件
参数化简介
使用参数化可以大大提高效率
不同的工具使用参数化的方法是不一样的;
postman使用的数据文件支持两大种,是比较常见的:一种是CSV,一种是json
各自有自己的使用场景{
csv:数据格式简单 数据组织起来比较简单
其中有账号密码还有断言:每一行就对应字段给值
所以带来了很突出的缺点:(1)不能测试bool类型:这与postman读取有关系,因为postman读取csv文件时会将所有的非数值类型的数据自动添加""变为字符串;所以就不能表示true和false
(2)不能存储复杂数据类型:元组 列表 字典
(3)不能实现参数测试(多参 少参 无参 错误参数)
以上三个缺点都是比较致命了;
应用场景:数据量较大,数据组织格式简单
}
因此出现了json数据格式{
csv的缺点就是json的有优点:可以测试布尔类型 能使用复杂的数据类型 可以实现参数测试
缺点也是比较明显的:相同数据量,json文件要远远大于csv文件(json格式是key-value的形式)
适用于数据量比较小的,适用于组织格式复杂:字典 列表等等可以作为数据值;需要进行参数设置,CSV使做不到参数测试的(json都是有自己的key的,所以是可以做参数设置的,多参少参并不会对其他数据造成影)
}
脚本只有一个,但是参数是有很多的;
参数化就是将测试数据组织到数据文件中,通过脚本的反复迭代,使用不同的数据,达到测试不同用例的目标
应用场景:测试同一个接口的不同测试点时,只有测试数据不同;考虑使用参数化;
参数化--csv文件
新建文本文档,要有文件扩展名,打开,第一行是写字段,字段和字段之间用英文逗号隔开;