参考
环境
| 名称 | 版本 |
|---|---|
| 操作系统 | Windows 10 X64 |
| Postman | Version 7.36.1 |
使用 Postman 模拟 Http 请求
下载 Postman
附件中可以下载
添加到 Chrom
解压下载好的文件到某个位置,打开 Chrom,按照下图步骤进行安装
点击 加载已解压的扩展程序
选择解压好的文件夹
简单使用
点击 启动
需要登录,但是可以跳过
然后进入界面
文本框中输入 https://www.baidu.com/s?wd=111111&rsv_spt=1&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=6&rsv_sug1=5&rsv_sug2=0&inputT=1212&rsv_sug4=1212
点击 Params,可以看到链接中的参数都被解析出来了
点击 Send,可以看到出现了对应的结果
Postman 变量的使用和设置
参考文章
场景描述
有下面两个接口,一个测试环境,一个生产环境,除了网址不一样,其它都一样
在没有使用变量之前,是这样使用的
测试环境 tab 信息
生产环境 tab 信息
是否有一种方法,可以只写一个 tab 页面,然后可以切换测试环境和生产环境,这样当接口多的时候,就方便使用。
变量的定义
定义两个环境的 tps_url
编写测试环境使用的 URL 后,保存
同样的方法编写生产环境使用的 URL 后,保存
变量的使用
1.tab 删除一个,保留一个
修改为
2.修改接口地址中变化的部分为定义的变量 tps_url,使用方式为 {{变量名称}},即 {{tps_url}}
切换对应的选项,这里切换到 税务系统-测试环境
点击 Send 就可以看到结果了
全局变量的定义
当切换为 No Environment 模式时,调用报错
这是因为这个模式下,我们没有定义变量 tps_url,找不到这个值,访问错误的网址导致的。
有没有办法在默认的情况也可以使用变量呢?这种情况可以使用全局变量
找到 Globals,Edit
添加 tps_url 变量
定义好之后,在 No Environment 模式点击 Send 按钮,也可以访问到结果了
前置脚本-Pre-request script-数据驱动
案例:登录接口实现数据驱动。
Postman 读取文本文件内容,批量进行登录,并返回登录结果
后端代码(C#)
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;namespace MvcApplication3.Controllers{public class ReturnResult<T>{public int Code { get; set; }public string Message { get; set; }public T Data { get; set; }}public class UserModel{public string UserName { get; set; }public string Password { get; set; }}public class HomeController : Controller{public ActionResult Index(){return View();}public List<UserModel> GetUsers(){List<UserModel> listData = new List<UserModel>();UserModel user1 = new UserModel();user1.UserName = "admin1";user1.Password = "password1";listData.Add(user1);UserModel user2 = new UserModel();user2.UserName = "admin2";user2.Password = "password2";listData.Add(user2);return listData;}public JsonResult Login(UserModel param){ReturnResult<bool> result = new ReturnResult<bool>();result.Code = 2000;result.Message = "登录成功";List<UserModel> listData = GetUsers();int count = listData.Count(t => t.UserName == param.UserName && t.Password == param.Password);if (count == 0){result.Code = 1000;result.Message = "用户名或密码错误";}return Json(result, JsonRequestBehavior.AllowGet);}}}
设置需要读取的文本文件
D:\\Data\\User.txt
内容如下
UserName,Passwordadmin1,password1admin2,password8
前置脚本和请求体
从数据文件中取到对应字段 UserName,Password,赋值到全局变量 UserName,Password 里面
pm.globals.set("UserName", data.UserName);pm.globals.set("Password", data.Password);
请求的 Body 从全局变量 UserName,Password 读取值进行请求
{"UserName": "{{UserName}}","Password": "{{Password}}"}
New Runner Window
Run Test 结果
后置脚本-Tests-接口的关联
案例:登录接口出参作为后续接口的入参
后端代码(C#)
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;namespace MvcApplication3.Controllers{public class ReturnResult<T>{public int Code { get; set; }public string Message { get; set; }public T Data { get; set; }}public class UserModel{public string UserName { get; set; }public string Password { get; set; }}public class HomeController : Controller{public ActionResult Index(){return View();}public List<UserModel> GetUsers(){List<UserModel> listData = new List<UserModel>();UserModel user1 = new UserModel();user1.UserName = "admin1";user1.Password = "password1";listData.Add(user1);UserModel user2 = new UserModel();user2.UserName = "admin2";user2.Password = "password2";listData.Add(user2);return listData;}public JsonResult Login(UserModel param){ReturnResult<string> result = new ReturnResult<string>();result.Code = 2000;result.Message = "登录成功";List<UserModel> listData = GetUsers();int count = listData.Count(t => t.UserName == param.UserName && t.Password == param.Password);if (count == 0){result.Code = 1000;result.Message = "用户名或密码错误";}else{result.Data = string.Format("token-{0}-{1}",param.UserName,param.Password);}return Json(result, JsonRequestBehavior.AllowGet);}/// <summary>/// 获取用户列表/// </summary>/// <returns></returns>public JsonResult GetUserList(){ReturnResult<List<UserModel>> result = new ReturnResult<List<UserModel>>();result.Code = 2000;result.Message = "Success";//获取 tokenstring token = Request.Headers["Content-token"];//token 验证UserModel param = new UserModel();param.UserName = token.Split('-')[1];param.Password = token.Split('-')[2];List<UserModel> listData = GetUsers();int count = listData.Count(t => t.UserName == param.UserName && t.Password == param.Password);if (count == 0){result.Code = 1000;result.Message = "Token 异常";}else{result.Data = listData;}return Json(result, JsonRequestBehavior.AllowGet);}}}
断言
pm.test("登录成功", function () {var jsonData = pm.response.json();pm.expect(jsonData.Message).to.eql("登录成功");});
请求体
测试结果
登录获取 Token 并赋值到全局变量
请求体
{"UserName": "admin1","Password": "password1"}
后置脚本-Tests
获取返回结果中的 Data 字段值赋值给全局变量 Content-token
pm.globals.set("Content-token", pm.response.json().Data);// pm.test("登录成功", function () {// var jsonData = pm.response.json();// pm.expect(jsonData.Message).to.eql(");// });
根据 Token 获取用户列表
New Runner Window
运行结果
压力测试
升级到 10.24.24 本地链接丢失
导入原记录,点击 import,选择文件导入即可
文件地址一般在:C:\Users\{本地名}\AppData\Roaming\Postman