• 3天精通Postman---动态参数&断言&CSV数据驱动&Mock Server


    DAY2课题:Postman接口关联&动态参数&断言&CSV数据驱动

    一、接口关联,接口依赖,多接口串联,组合API

    第一个接口的返回值作为第二个接口的参数。
    javascript通用语法:
    1.所有的符号都必须是英文状态下的符号
    2.每一句代码后都必须有;结束。有if或for除外。
    3.变量通过var定义。
    第一种接口关联方式:json提取器的方式实现接口关联,只能针对Josn数据
    1. //打印
    2. console.log(responseBody);
    3. //把返回的json字符串转换成对象。
    4. var jsonObj = JSON.parse(responseBody);
    5. //从对象中取出access_token的值并设置全局变量
    6. pm.globals.set("access_token",jsonObj.access_token);
    第二种接口关联方式:正则表达式提取器的方式实现接口关联,所有数据都可以。
    1. //通过返回的结果匹配一个正则表达式去得到需要的值
    2. var datas = responseBody.match(new RegExp('"access_token":"(.*?)"'));
    3. //从变量中取出access_token的值并设置全局变量
    4. pm.globals.set("access_token",datas[1]);
    其他的方法:
    1.获取响应头的值
    1. var content_type = postman.getResponseHeader("Content‐Type");
    2. console.log(content_type);
    2.获取响应的Cookie的值
    1. var csrf_token = postman.getResponseCookie("csrf_token");
    2. console.log(csrf_token.value);
    3.如果返回的是xml的值,那么可以转化成对象
    var jsonObject = xml2Json(responseBody);

    二、Postman的动态参数(随机数)

    1.内置的动态参数: 有局限。局限在于无法断言。
    {{$timestamp}}  生成当前时间的时间戳
    {{$randomInt}}   生成0-1000的随机数
    {{$guid}}             生成一个很长的GUID的随机字符串
    2.自定义的动态参数或函数。
    自定义时间戳参数
    1. //自定义动态参数时间戳
    2. var times = Date.now();
    3. console.log(times)
    4. //设置为全局变量
    5. pm.globals.set("times", times);

    随机整数

    1. //随机数
    2. const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) +min;
    3. //打印
    4. console.log(randomMobile(100000000,999999999));
    随机手机号
    1. //随机数
    2. const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) +min;
    3. //随机手机号
    4. var randomMobile = `18${randomInt(100000000,999999999)}`;
    5. //打印
    6. console.log(randomMobile);
    等待N秒实现:有些接口有调用时间限制,5秒之内只能调用1次。
    1. const sleep = (milliseconds) => {
    2. const start = Date.now();
    3. while (Date.now() <= start + milliseconds) {}
    4. };
    5. //等待5秒
    6. sleep(5000)
    7. console.log("---------结束----------");

    三、Postman的环境变量和全局变量

    全局变量:在所有环境所有接口都可以访问的变量。
    环境变量:在当前环境所有接口都可以访问的变量。

    四、Postman断言

    断言是判断预期结果和实际结果是否一致。
    1.状态断言:断言返回码为200,一般只有一个。
    2.业务断言:判断最核心的业务关键字。可以有多个。
    断言状态码为200 (必用)
    断言返回的结果中包含有一个字符串。 (常用)
    断言检查返回的json对象中的字段值。 (一般用于当返回是json对象时)
    断言返回的body等于一个字符串。 (一般用于当返回的结果很少时)
    检查是否包含有Content-type的响应头
    检查请求耗时少于200ms
    检查post请求的响应码是否是一个值
    检查返回的信息是否是一个字符串
    1. //状态断言:检查返回的状态码为200
    2. pm.test("检查返回的状态码为200", function () {
    3. pm.response.to.have.status(200);
    4. });
    5. //业务断言:检查返回的结果中包含有access_token字符串
    6. pm.test("检查返回的结果中包含有access_token字符串", function () {
    7. pm.expect(pm.response.text()).to.include("access_token");
    8. });
    9. //检查返回的结果中的json里面的expires_in的值为7200
    10. pm.test("检查expires_in的值为7200", function () {
    11. var jsonData = pm.response.json();
    12. pm.expect(jsonData.expires_in).to.eql(7200);
    13. });
    14. //检查返回的body等于一个字符串
    15. // pm.test("Body is correct", function () {
    16. // pm.response.to.have.body("response_body_string");
    17. // });
    18. //断言响应头中有Content‐Type
    19. pm.test("Content-Type is present", function () {
    20. pm.response.to.have.header("Content-Type");
    21. });
    22. //断言时间少于200ms
    23. pm.test("Response time is less than 200ms", function () {
    24. pm.expect(pm.response.responseTime).to.be.below(200);
    25. });
    26. //断言状态码在一个区间
    27. pm.test("Successful POST request", function () {
    28. pm.expect(pm.response.code).to.be.oneOf([200, 202]);
    29. });
    30. //断言返回信息
    31. pm.test("Status code name has string", function () {
    32. pm.response.to.have.status("OK");
    33. });
    在断言中不能通过{{}}获取全局变量:可以通过以下方式获取:
    pm.globals.get("times")
    全局断言

    五、其他接口类型

    1.文件上传接口。

    2.必须带请求头的接口。
    1.抓包工具中复制请求头

    2.Bulk Edit编辑请求头

    3.Key-Value Edit转化成

     

  • 相关阅读:
    从地址中如何提取或者识别街道?支持模糊地址
    Istio知识点
    Spring 如何进行编程式事务管理呢?
    2022年华中杯数学建模挑战赛B题量化投资问题求解全过程文档及程序
    服务器防漏扫,主机加固方案来解决
    C++ —— 内联函数
    html设计(两种常见的充电效果)
    优先级队列 —— 堆
    基于STM32设计的车库监控报警系统
    基于flask的网站如何使用https加密通信-问题记录
  • 原文地址:https://blog.csdn.net/weixin_41121249/article/details/126623610