测试工具postman学习
Posted 素七七吖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测试工具postman学习相关的知识,希望对你有一定的参考价值。
接口测试
postman主要用于接口测试,接口测试是对开发的接口的输入输出进行测试,以及接口间的互相逻辑的测试
接口测试一般开发会提供接口文档,根据接口文档来测试实际情况是否符合接口文档
没有接口文档就需要自己去抓包接口然后进行测试
接口测试最主要的就是调用接口验证结果
发送请求
发送get请求
点击collection,创建新的collection在新的collection下创建request
在request界面设定为get请求
输入get请求的URL和必填参数,填写的参数会自动拼接到URL中
send发送请求就可以看到响应结果
在天气api里面选一个
天气api接口网址https://www.tianqiapi.com/
请求的组件
响应的组件
主要关注的四大要素就是URL、方法、请求头和参数
post与get请求类似,就是请求方法选择为post
get请求实例
这里实战一个需要添加必要的请求头域的get请求的发送
直接F12去百度或者bilibili或者其他网站抓取一些请求(xhr格式的)来进行请求的发送,根据信息写入URL,参数,头域
根据参看的信息写入URL,复制URL地址进去后地址中带有的参数会自动生成数据,添加头域,有的请求不添加必要的头域可能会发送请求失败
post请求实例
这里的post实例是文件上传以及json数据格式的请求
采用获取QQ信息的接口https://api.muxiaoguo.cn/api/QqInfo/
断言和环境变量
变量
以前面的天气的接口为例,城市这个参数是可变的,我们可以设计一个变量来存放城市名称
变量调用格式{{变量名}}
添加环境变量,点击眼睛图标后在出来的界面点击Add
创建环境变量,环境变量是适用于当前请求的,如果创建了全局变量的话,该变量就是每个接口都可以使用。
创建完后将No environment改为刚刚创建的environment的名字就可以使用刚刚创建的变量了,如果是全局变量就不用设置
断言
断言包括请求前的脚本设置请求前置操作,以及请求后的对状态码,响应正文、响应头的断言,对应的功能就是pre-request Script 以及Test功能
在请求前获取环境变量,并且控制台输出一下
使用Test主要是为了自动对结果进行校验,查看是否符合预期结果
当数据结果数组格式时,第一组的数据里的city的值就是jsonData[0].city,前面定义变量不变
多接口测试
多接口测试就是把自己创建写入的请求保存在一个collection下,运行这个collection就行了
点击run之后可以在出来的界面选择需要进行一起测试的请求
有环境变量的要选择环境变量,环境变量只能选择一个,所以要把所有的环境变量写在一起
多组数据进行接口测试
创建Excel文件写入与自己设计的变量对应的值,另存为csv格式,修改断言,之后再run的界面select file 选择刚刚存为csv格式的文件
预览数据格式乱码的话可能是编码问题,利用txt打开文件或者其他软件打开文件修改csv文件的编码为utf-8
常见数据处理
cookie处理
有些请求在发送时需要携带cookie,可以在header中添加抓包到的信息里面显示的cookie值或者是接口文档里面的cookie值
也可以利用请求界面上的cookie来创建cookie写入cookie的值
上述发放是基于cookie值保存时间很久的情况,但是一般情况下cookie是不会保存很久的
我们需要先进行获取cookie对应的前一步操作之后再执行该请求,列如登入后的操作需要先执行登录操作
token处理
有些请求在进行一次请求后会有token返回值,其他请求要带上这个token值才能请求
可以把获取到的token存到环境变量当中去,其他请求直接调用环境变量里的值即可
先添加一个环境变量然后在头一个请求的Test中设置变量(请求后断言)
在下一个请求的header中添加token或者json格式中直接写入token后发送请求就可以发送成功
在测试时往往会有很多不同的测试数据,这就需要些csv文档来进行参数化的调用测试
时间戳处理
有时我们在请求接口时,需要带上当前时间戳这种动态参数,那么postman能不能自动的填充上呢。
可以直接在参数值写 {{$timestamp}}
我们也可以使用postman的pre-request script,结合全局变量来实现。
先在请求参数里使用这种方式填写value参数的值为{{var}}
然后在 pre-request script 添加js代码 pm.environment.set('var',Math.round(new Date()/1000)); 其中var为上一步定义的相同名字
Math.round(new Date()/1000) 的作用是返回秒为单位的当前时间戳
以上是关于测试工具postman学习的主要内容,如果未能解决你的问题,请参考以下文章