Postman 使用技巧【持续更新】

2016年10月10日 10:37 · 阅读(351) ·

参考

Postman你说你测个接口,就不能站直吗?

环境

名称 版本
操作系统 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 变量的使用和设置

参考文章

postman变量的使用和设置

场景描述

有下面两个接口,一个测试环境,一个生产环境,除了网址不一样,其它都一样

在没有使用变量之前,是这样使用的

测试环境 tab 信息

生产环境 tab 信息

是否有一种方法,可以只写一个 tab 页面,然后可以切换测试环境和生产环境,这样当接口多的时候,就方便使用。

变量的定义

定义两个环境的 tps_url

编写测试环境使用的 URL 后,保存

同样的方法编写生产环境使用的 URL 后,保存

变量的使用

1.tab 删除一个,保留一个

修改为

2.修改接口地址中变化的部分为定义的变量 tps_url,使用方式为 {{变量名称}},即 {{tps_url}}

切换对应的选项,这里切换到 税务系统-测试环境

点击 Send 就可以看到结果了

全局变量的定义

当切换为 No Environment 模式时,调用报错

这是因为这个模式下,我们没有定义变量 tps_url,找不到这个值,访问错误的网址导致的。

有没有办法在默认的情况也可以使用变量呢?这种情况可以使用全局变量

找到 GlobalsEdit

添加 tps_url 变量

定义好之后,在 No Environment 模式点击 Send 按钮,也可以访问到结果了

前置脚本-Pre-request script-数据驱动

案例:登录接口实现数据驱动。
Postman 读取文本文件内容,批量进行登录,并返回登录结果

后端代码(C#)

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Mvc;
  6. namespace MvcApplication3.Controllers
  7. {
  8. public class ReturnResult<T>
  9. {
  10. public int Code { get; set; }
  11. public string Message { get; set; }
  12. public T Data { get; set; }
  13. }
  14. public class UserModel
  15. {
  16. public string UserName { get; set; }
  17. public string Password { get; set; }
  18. }
  19. public class HomeController : Controller
  20. {
  21. public ActionResult Index()
  22. {
  23. return View();
  24. }
  25. public List<UserModel> GetUsers()
  26. {
  27. List<UserModel> listData = new List<UserModel>();
  28. UserModel user1 = new UserModel();
  29. user1.UserName = "admin1";
  30. user1.Password = "password1";
  31. listData.Add(user1);
  32. UserModel user2 = new UserModel();
  33. user2.UserName = "admin2";
  34. user2.Password = "password2";
  35. listData.Add(user2);
  36. return listData;
  37. }
  38. public JsonResult Login(UserModel param)
  39. {
  40. ReturnResult<bool> result = new ReturnResult<bool>();
  41. result.Code = 2000;
  42. result.Message = "登录成功";
  43. List<UserModel> listData = GetUsers();
  44. int count = listData.Count(t => t.UserName == param.UserName && t.Password == param.Password);
  45. if (count == 0)
  46. {
  47. result.Code = 1000;
  48. result.Message = "用户名或密码错误";
  49. }
  50. return Json(result, JsonRequestBehavior.AllowGet);
  51. }
  52. }
  53. }

设置需要读取的文本文件

D:\\Data\\User.txt

内容如下

  1. UserName,Password
  2. admin1,password1
  3. admin2,password8

前置脚本和请求体

从数据文件中取到对应字段 UserNamePassword,赋值到全局变量 UserNamePassword 里面

  1. pm.globals.set("UserName", data.UserName);
  2. pm.globals.set("Password", data.Password);

请求的 Body 从全局变量 UserNamePassword 读取值进行请求

  1. {
  2. "UserName": "{{UserName}}",
  3. "Password": "{{Password}}"
  4. }

New Runner Window

Run Test 结果

后置脚本-Tests-接口的关联

案例:登录接口出参作为后续接口的入参

后端代码(C#)

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Mvc;
  6. namespace MvcApplication3.Controllers
  7. {
  8. public class ReturnResult<T>
  9. {
  10. public int Code { get; set; }
  11. public string Message { get; set; }
  12. public T Data { get; set; }
  13. }
  14. public class UserModel
  15. {
  16. public string UserName { get; set; }
  17. public string Password { get; set; }
  18. }
  19. public class HomeController : Controller
  20. {
  21. public ActionResult Index()
  22. {
  23. return View();
  24. }
  25. public List<UserModel> GetUsers()
  26. {
  27. List<UserModel> listData = new List<UserModel>();
  28. UserModel user1 = new UserModel();
  29. user1.UserName = "admin1";
  30. user1.Password = "password1";
  31. listData.Add(user1);
  32. UserModel user2 = new UserModel();
  33. user2.UserName = "admin2";
  34. user2.Password = "password2";
  35. listData.Add(user2);
  36. return listData;
  37. }
  38. public JsonResult Login(UserModel param)
  39. {
  40. ReturnResult<string> result = new ReturnResult<string>();
  41. result.Code = 2000;
  42. result.Message = "登录成功";
  43. List<UserModel> listData = GetUsers();
  44. int count = listData.Count(t => t.UserName == param.UserName && t.Password == param.Password);
  45. if (count == 0)
  46. {
  47. result.Code = 1000;
  48. result.Message = "用户名或密码错误";
  49. }
  50. else
  51. {
  52. result.Data = string.Format("token-{0}-{1}",param.UserName,param.Password);
  53. }
  54. return Json(result, JsonRequestBehavior.AllowGet);
  55. }
  56. /// <summary>
  57. /// 获取用户列表
  58. /// </summary>
  59. /// <returns></returns>
  60. public JsonResult GetUserList()
  61. {
  62. ReturnResult<List<UserModel>> result = new ReturnResult<List<UserModel>>();
  63. result.Code = 2000;
  64. result.Message = "Success";
  65. //获取 token
  66. string token = Request.Headers["Content-token"];
  67. //token 验证
  68. UserModel param = new UserModel();
  69. param.UserName = token.Split('-')[1];
  70. param.Password = token.Split('-')[2];
  71. List<UserModel> listData = GetUsers();
  72. int count = listData.Count(t => t.UserName == param.UserName && t.Password == param.Password);
  73. if (count == 0)
  74. {
  75. result.Code = 1000;
  76. result.Message = "Token 异常";
  77. }
  78. else
  79. {
  80. result.Data = listData;
  81. }
  82. return Json(result, JsonRequestBehavior.AllowGet);
  83. }
  84. }
  85. }

断言

  1. pm.test("登录成功", function () {
  2. var jsonData = pm.response.json();
  3. pm.expect(jsonData.Message).to.eql("登录成功");
  4. });

请求体

测试结果

登录获取 Token 并赋值到全局变量

请求体

  1. {
  2. "UserName": "admin1",
  3. "Password": "password1"
  4. }

后置脚本-Tests

获取返回结果中的 Data 字段值赋值给全局变量 Content-token

  1. pm.globals.set("Content-token", pm.response.json().Data);
  2. // pm.test("登录成功", function () {
  3. // var jsonData = pm.response.json();
  4. // pm.expect(jsonData.Message).to.eql(");
  5. // });

根据 Token 获取用户列表

New Runner Window

运行结果

压力测试

升级到 10.24.24 本地链接丢失

参考:postman升级后本地链接丢失

导入原记录,点击 import,选择文件导入即可

文件地址一般在:C:\Users\{本地名}\AppData\Roaming\Postman


相关附件 Postman-4.6.0 | 大小:5.22M | 下载