首页 > 其他分享 >使用postman做接口测试

使用postman做接口测试

时间:2023-12-18 17:03:38浏览次数:27  
标签:postman 自定义 接口 参数 测试 请求 全局变量 pm

(目录)

一、postman的基础应用

1. 请求部分

4989f23d890a42488a436320ce20b582.png

2. 请求部分body

7a7c53b7af374b438ab4cdcc3ee3bb93.png

3. 响应部分

f7e620fd9bec4742a078e4eb23c28b17.png ca1a94aef1644bf7b32b29e6daff4f2e.png

二、接口关联

接口关联:下一个接口的参数使用了上一个接口的返回值

1. 使用json.parse格式

首先找到有返回值的接口的Tests,将其参数设置为全局变量,以便其他接口使用

设置全局变量 pm.globals.set() d896c9d2fc58437c8cdba3600a7ced50.png 使用全局变量(后面都同理) 在参数位置打印两个大括号,会自动弹出全局变量信息,选中需要的全局变量即可。 f44fdb13dac24b88bf1d4d5aabf58461.png

2. 使用正则表达式

设置全局变量 a7d8e7bdf7d04c3dbc42113ffd685b07.png

3. 使用cookie

f790a265913945f8adf187b04ceddda0.png

4. 使用请求头(Header)

2ddefa38dcf24b239a9fe9a06d626c75.png

三、设置动态参数

注意:postman内置的动态参数无法进行断言,必须使用自定义动态参数!

1. 内置动态参数

{{$timestamp}} -- 生成当前时间的时间戳

{{$randomInt}} -- 生成0-1000之间的随机整数

{{$guid}} -- 生成随机的guid字符串值

2. 自定义动态参数

实现时间戳 获取 9cce4081ef564a5caef7b8dc005f17c6.png 使用 adf7dc4f3d4c421aa1bb74f5014d5191.png 实现等待3秒

const sleep = (milliseconds) => {
    const start = Date.now();
    while (Date.now() <= start + milliseconds) {}
};
sleep(3000);java

四、环境变量和全局变量

全局变量 可以在Environments的Globals里面配置全局变量可以供所有接口去使用:规则{{全局变量名字}} ca0bfeb909104c9c82717ea9821e359c.png 环境变量 环境变量:开发环境,测试环境,线上环境 主要用于环境的不同指定的ip和端口号不同然后去发送同样的请求 5570b3e23f7241d3aaf30f02bb12c1a3.png e2fa59216f7540dd9d10d66e3fe9f368.png

五、断言

使用 断言一般在接口Tests部分使用,目的是为了效验接口的响应信息是否符合预期

//1. 检查状态码
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});
//2. 检查响应体重还发包含该字符串
pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
//3. 检查json中某个字段的值
pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
});
//4. 检查响应中body中指定的字符串
pm.test("Body is correct", function () {
    pm.response.to.have.body("response_body_string");
});
//5. 检查是否包含某响应头
pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type");
});
//6. 检查请求消耗的时间是否小于xxms
pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);
});

c8e77fd8887a4da5b49f2be24d6827c2.png 1428e5f9a1504301b11db64cae3faeb6.png 725f7569c4d347bdabca40c5b3d793a2.png 与自定义参数搭配使用 再讲动态参数时有提到过:postman内置的动态参数无法进行断言,必须使用自定义动态参数!

其原因就是在断言内容部分无法使用{{xxx}}的方式将参数传递进去,只能使用字符串拼接的方式将参数传入

举例

使用内置参数 1339c74ee05e4278b4e73b4f929501ec.png 可以看到,内置参数并没有进行解析,自定义参数也是同理(这里不演示了)。

我们可以将自定义参数通过pm.globals.get("xxx") / globals["xxx"] / globals.xxx (xxx为全局参数名)的方式将自定义参数的内容提取出,然后在进行字符串拼接。如下。(注意:传参部分也要对应修改) 8cf26d569f1e4abf8c72943f914d0d82.png

六、接口测试必带请求头信息设置

在测试不同接口的时候可能需要配置一些必带请求头参数才会返回完整的响应体,所以需要用户自行在请求头中配置参数

特殊的:

  1. 在遇到请求头无法更改的情况,可以将原请求头取消掉,然后新增一个请求头填写参数 885e4e8219994e9db5a62877f38d2425.png
  2. 一般必带请求头会在接口文档中描述具体,如果不清楚需要携带哪些请求头,可以通过抓包工具Fiddler获取所有请求头信息,复制到postman中使用

步骤一:抓包,复制请求头信息 7efe27a7cdb8411fb7f23ceb151ac3bf.jpeg 步骤二:点击postman请求头的批量编辑按钮 7ab08c41492d40deb6882b3e47a8e0c9.png 步骤三:将复制的内容粘贴进来,并回到key-value编辑 d2ada49e43844dd1b4ecc07726eb201b.png

七、接口鉴权

接口鉴权常用的有两种: b1cf0914628d4cb692598a805c355ef4.png Bearer Token:发送一个token令牌,服务器针对token进行解密验证 2.png Basic Auth:基础验证,提供用户名和密码进行验证,postman会自动生成鉴权码 3.png

标签:postman,自定义,接口,参数,测试,请求,全局变量,pm
From: https://blog.51cto.com/u_16357126/8875782

相关文章

  • webservice接口的调用
    1.添加web引用:找到服务的url(网址) 输入好url后点击添加引用注意:.asmx链接引用时是添加web引用?wsdl链接引用时添加service引用2.代码调用WebReference.WebService1webtest=newWebReference.WebService1();webtest.GDXF2("sss"); ......
  • 鸿蒙原生应用/元服务开发-Stage模型能力接口(六)
    @ohos.app.ability.contextConstant(ContextConstant)一、说明ContextConstant提供Context相关的枚举,当前仅包含数据加密等级的枚举。本模块首批接口从APIversion9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。本模块接口仅可在Stage模型下使用。二、导入模......
  • 【WCH以太网接口系列芯片】CH9121\20的使用
    本篇文章将介绍沁恒微电子的以太网转接芯片CH9121(CH9120和CH9121使用上没有区别,注意配置工具不一样,可以在沁恒微电子官网自行下载测试),该芯片支持网口和串口相互透传,可以通过串口AT指令或网口工具进行快速配置,无需编程就能实现设备联网。如图1示,我们在使用CH9121Demo板时,......
  • 为什么我的请求路径中多了/ 还是能正确请求到我的接口??
    问题:最近测试时发现postman输入了错误了请求路径也能正确路由到我后端的接口,这是为什么呢?举例:请求路径/rest/ceshi/testa/testb?id=1是后端正确的url当把路径中随意/处再增加多个/时,例如请求路径:/rest/ceshi///testa/testb?id=1,任然能正常请求到接口。......
  • Monkey工具进行自定义脚本测试
    常规Monkey测试执行的是随机的事件流,但如果只是想让Monkey测试某个特定场景这时候就需要用到自定义脚本了,Monkey支持执行用户自定义脚本的测试,用户只需要按照Monkey脚本的规范编写好脚本,存放到手机上,启动Monkey通过-f参数调用脚本即可。一、Monkey脚本API方法LaunchActivity(pkg_n......
  • Python自动化软件测试:接口测试Requests模块从0到精通
    Requests模块是Python中一个非常流行的第三方库,用于处理HTTP请求。在接口自动化测试中,Requests模块可用于模拟发送HTTP请求并检查响应数据,以验证API的功能和性能。以下是与Requests模块相关的一些知识点,这些知识点都是从事接口自动化测试,必须要掌握的内容:安装和导入Requests模块:使......
  • Python selenium实现自动化测试
    一、安装selenium打开命令控制符输入:pipinstall-Uselenium火狐浏览器安装firebug:www.firebug.com,调试所有网站语言,调试功能SeleniumIDE是嵌入到Firefox浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能,IDE录制的脚本可以可以转换成多种语言,从而帮助我们快速的开发......
  • Python+Selenium自动化测试——输入,点击操作
    这是我的第一个真正意思上的自动化脚本。1、练习的测试用例为:打开百度首页,搜索“胡歌”,然后检索列表,有无“胡歌的新浪微博”这个链接2、在写脚本之前,需要明确测试的步骤,具体到每个步骤需要做什么,既拆分测试场景,考虑好之后,再去写脚本。此测试场景拆分如下:1)启动Chrome浏览器2)打开百......
  • 详解appium自动化测试工具(monitor、uiautomatorviewer)
    appium是一个自动化测试开源工具,支持iOS和Android平台上的原生应用,web应用和混合应用。移动原生应用:单纯用ios或者android开发语言编写的、针对具体某类移动设备、可直接被安装到设备里的应用,一般可通过应用商店获取,比如某个游戏app;移动web应用:使用移动浏览器访问的应用(appium支......
  • Python多线程应用于自动化测试操作示例
    本文实例讲述了Python多线程应用于自动化测试操作。分享给大家供大家参考,具体如下:多线程执行测试用例实例:importthreadingfromtimeimportsleep,ctimefromseleniumimportwebdriver#测试用例1deftest_baidu(browser,search):print("开始,现在时间是%s"%ctime())print("......