个人记录 - postman自动化测试,用到的方法

1. 导入json数据,主界面左上角,import

23bcf506337c51f38abee55fefbb1661291.jpg

 

2. 配置环境变量environment。作用:本地、测试环境、上线环境跑测试用例,只需Runner时切换environment文件夹即可(主页面右上角)

cda16a5f2291dad7edfbc72c022ae7b3a05.jpg

 

添加环境变量文件夹(可取名为local),添加 url 和 port 的初始值,可导出;主页面右上角齿轮,添加环境变量。 

d6b16c0770b9c1328fd3f44398050af1482.jpg

主页面地址栏可类似于    http://{{url}}:{{port}}/user

c1b890088099f6df0f9ae282ed481b5f4f8.jpg

 

3. Runner , 作用: 选择一个文件夹(可嵌套)或单一文件,点击

最上面一行标题栏,Runner选择一个文件夹,选择一个环境变量,下方多选框 keep variable values 默认不勾选,代表此次runner结束后主界面变量不受影响;

27fe18ad0cbeca9d17be1025b98a183aa8f.jpg

2937ee12445da339c572cf48b46dc0b3f81.jpg

 

 

3664b6c8fef499eafc7e8468ecfe945bb79.jpg

body中填入请求值,Headers如有需要也可添加;Pre-request Script是请求前做的操做;Tests是得到返回后做的操作,以及断言

我们的目的是Tests中的断言都符合预期,跑出的结果都是pass

 

4. Body

符合json标准即可

"age":5   //数字

"class":"five" //字符串

"grade": {{grade}}  //全局变量或环境变量中grade的值,作为数字赋给“grade”

"name":"{{name}}" //全局变量或环境变量中name的值,作为字符串赋给“name”

 

5. JS

var name = rankName(7);  //定义一个变量,并调用自定义方法

pm.globals.set("rankName ", name ); //将name的值存到全局变量中,"rankName"为key

pm.environment.set("variable_key", "variable_value"); //存进环境变量的方法

全局变量和环境变量在Pre和Tests中获取都用get;  Header、Body、地址栏中使用,{{rankName}}

var request = JSON.parse(request.data);  //将请求参数转成json

var r = pm.response.json();     //将返回值转成json
var id = r.id; //获取json中的值

console.log(" username = " + request["username"] ); //控制台打印

 

//获取随机长度,随机范围字符的方法

function rankName(len){
  var randstr = ''
  var dict = '0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM_-'
  for(var i = 0; i < len; i++) {
    var index = Math.floor(Math.random()*dict.length)
    randstr += dict[index]
  }
  return randstr
}
 

//循环获取json中集合的值并对比

var r = pm.response.json();  

for(var i=0, len=r.data.groups.length; i<len; i++){
    if(groups[i].name == pm.globals.get("groupName")){
        pm.globals.set("GROUP_ID_TEST", groups[i].id);
        break;
    }
}

 

//随机生成0-n的数

function getLimit(max){
    var limit = Math.ceil(Math.random() * max);
    return limit;
}

//随机生成min-max范围内整数的方法
function getGroupId(){
    var max = 242;
    var min = 152;
    var groupId = parseInt(Math.random()*(max-min+1)+min,10)
    return groupId;
}

 

getRoute(rs.next)

function getRoute(next){
    if(next === null || next === undefined || next === ''){
        return;
    }
    pm.sendRequest(kongUrlItem + next, function (err, response) {
        const item = response.json();
        console.log('item=>'+item.next);
        checkData(item.data)
        getRoute(item.next)
        
    });
}

 

6. 断言:

var r = JSON.parse(responseBody);

tests[""] 双引号中为这个断言的名字,推荐记录要断言的结果,Runner中方便查看; 后面跟一个 = 是语法格式

r.code === 500 为真正要断言的等式
tests["code is 500"] = r.code === 500  //预期返回的code是500,若不是,则不通过(即这个请求若返回200,Runner中的这个断言也是不通过的);
tests["非空参数校验提示"] = r.message === "can't be empty" //,判断返回的message中,提示是否符合预期

tests["长度为1"] = d.groups.length === 1
tests["组名相同"] = d.data.groups[0].name === pm.globals.get("groupName"); 

tests["test groups []"] = JSON.stringify(d.data.groups)=="[]" //断言空集合

JSON.stringify(a)==="{}"  判断json空对象

tests["判断包含字符串"] = groups[i].name.toLowerCase().indexOf(groupNameLike.toLowerCase()) >= 0 //断言忽略大小写,包含字符串

setTimeout(()=>console.log('等待'), 1000);  

 

 

在遇到有依赖的接口时,比如需要登录或者需要从前一个接口的结果中获取参数时,我们往往需要在该请求前先发送一下所依赖的请求, 我们可以在Pre-request script中使用pm.sendRequest实现

  1. 发送GET请求
const url = 'http://115.28.108.130:5000/api/user/getToken/?appid=136425';
// 发送get请求
pm.sendRequest(url, function (err, res) {
  console.log(err ? err : res.text());  // 控制台打印请求文本
});

可以配合pm.environment.set(key:value)来将响应中的数据保存到环境变量中以供本次请求使用
示例: 使用请求前脚本获取token并使用,

 

 

Postman使用脚本发送get请求

  1. 发送表单格式Post请求
//构造一个登录请求
const loginRequest = {
    url: 'http://115.28.108.130:5000/api/user/login/',
    method: "POST",
    body: {
        mode: 'urlencoded',  // 模式为表单url编码模式
        urlencoded: 'name=张三&password=123456'
    }
};

// 发送请求
pm.sendRequest(loginRequest, function (err, res) {
    console.log(err ? err : res.text());
});

输出信息可以通过点击Postman菜单栏 ->view-> Show Postman Console, 打开控制台查看(先打开控制台,再发送请求)

 

Postman使用脚本发送Post表单请求

  1. 发送JSON格式请求
// 构造一个注册请求
const regRequest = {
  url: 'http://115.28.108.130:5000/api/user/reg/',
  method: 'POST',
  header: 'Content-Type: application/json',  //注意要在Header中声明内容使用的类型
  body: {
    mode: 'raw',  // 使用raw(原始)格式
    raw: JSON.stringify({ name: '小小', password: '123456' }) //要将JSON对象转为文本发送
  }
};

//发送请求
pm.sendRequest(regRequest, function (err, res) {
  console.log(err ? err : res.json());  // 响应为JSON格式可以使用res.json()获取到JSON对象
});

 

Postman脚本中发送JSON格式Post请求

  1. 发送XML格式请求
    发送XML格式和发送JSON格式差不多, 只要指定内容格式并发送相应的内容即可
//构造请求
const demoRequest = {
  url: 'http://httpbin.org/post',
  method: 'POST',
  header: 'Content-Type: application/xml',  // 请求头种指定内容格式
  body: {
    mode: 'raw',
    raw: '<xml>hello</xml>'  // 按文本格式发送xml
  }
};

//发送请求
pm.sendRequest(demoRequest, function (err, res) {
  console.log(err ? err : res.json());
});

本文所演示接口- 接口文档传送门




参考链接:https://www.jianshu.com/p/9481387c7cd7

 

转载于:https://my.oschina.net/u/4050414/blog/3036921

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值