postman变量,断言,参数化

环境变量

1.创建环境变量

正式环境是错误的,方便验证环境变化

2.在请求中添加变量

3.运行前选择环境变量

全局变量

能够在任何接口访问的变量

console中打印日志

复制代码
console.log(responseBody);

//将数据解析为json格式
var data = JSON.parse(responseBody);
console.log(data.access_token);

手动关联接口

方式一:json提取器

复制代码
在第一个接口提取变量

//获取access_token的值
var access_token = data.access_token;
//这个变量保存到环境变量中,这样大家都能用了
pm.environment.set("access_token", access_token);


在第二个接口使用变量

{{access_token}}

设为环境变量

复制代码
//将数据解析为json格式
var data = JSON.parse(responseBody);
console.log(data.access_token);
//获取access_token的值
var access_token = data.access_token;
//这个变量保存到环境变量中,这样大家都能用了
pm.environment.set("access_token", access_token);

设为全局变量

方式二:正则表达式提取

复制代码
第一个接口提取:
var result = responseBody.match(new RegExp('"access_token":"(.*?)"'));
console.log(result[1]);
pm.globals.set("token",result[1]);

第二个接口:
{{token}}

postman内置动态参数

{{$timestamp}} 时间戳

{{$randomInt}} 随机0-1000

{{$gui}} 随机guid

自定义动态参数

script->pre-request

复制代码
var times= Date.now();
pm.globals.set("times",times)

使用时
{{times}}

断言

断言一般包括

  1. 状态断言
  2. 业务断言

常用断言

复制代码
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});
pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
});
pm.test("Body is correct", function () {
    pm.response.to.have.body("response_body_string");
});
pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type");
});

pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);
});

自定义动态参数的断言

create-tag请求中

将动态参数在pre-request

复制代码
var tagname = "tag"+Math.random().toString(36).substring(2,15)
pm.globals.set("tagname", tagname);

body中使用tagname

复制代码
{
    "tag": {
        "name": "{{tagname}}" //标签名   } 
        } 
}

在断言中

添加方式

复制代码
pm.globals.get("tagname")
globals.tagname
globals["tagname"]

pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

console.log(responseBody)
var tagid = responseBody.match(new RegExp('"id":(.*?),'));
console.log(tagid[1])

//设置标签为全局变量
pm.globals.set("tagid", tagid[1]);
设置变量 tagname
tagname = pm.globals.get("tagname");
pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.tag.name).to.eql(tagname);
});

全局断言

数据驱动

1.先写参数csv

2.在请求中设置对应参数

3.修改断言

4.执行测试用例时上传参数csv文件

相关推荐
安冬的码畜日常2 小时前
【JUnit实战3_24】 第十四章:JUnit 5 扩展模型(Extension API)实战(下)
测试工具·junit·单元测试·jdbc·junit5扩展·junit extension
安全不再安全4 小时前
免杀技巧 - 早鸟注入详细学习笔记
linux·windows·笔记·学习·测试工具·web安全·网络安全
西游音月5 小时前
(2)pytest+Selenium自动化测试-环境准备
selenium·测试工具·pytest
明月与玄武9 小时前
Postman 的汉化安装中文版及使用指南!
测试工具·postman·postman汉化
程序员杰哥10 小时前
Fiddler抓包手机和部分app无法连接网络问题
自动化测试·软件测试·python·测试工具·智能手机·fiddler·测试用例
我的xiaodoujiao11 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 23--数据驱动--参数化处理 Yaml 文件
python·学习·测试工具·pytest
要一杯卡布奇诺17 小时前
测开百日计划——Day1
功能测试·测试工具·单元测试·集成测试
安冬的码畜日常1 天前
【JUnit实战3_28】第十七章:用 JUnit 5 实测 SpringBoot 项目
spring boot·功能测试·测试工具·设计模式·单元测试·junit5
西部森林牧歌2 天前
PostIn零基础学习 - 如何使用接口Mock尽早满足前端开发需求
postman·postin·tiklab devops
程序员三藏2 天前
接口自动化测试框架搭建详解
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试