Postman读取csv文件完成接口自动化测试(附Jmeter做相同工作的对比)

  最早接触Postman的时候还是一个Chrome插件,后来已经发展成了完成客户端。最近研究了一下,发现Postman也可以完成很多事情。譬如读取csv文件完成接口自动化测试。不过尝试过后,感觉还是Jmeter顺手和实用一些。具体可以看两个工具完成相同工作时的步骤和表现。

一、接口示例:

二、用例示例:

三、Postman篇

1. 配置环境

右上角齿轮按钮->Environment options->Add->添加一个测试环境

URL 变量名、value 常量

2. 编写接口信息

右上角切换至刚才添加的本地环境->选择请求方式->填入接口地址->填入接口参数

{ {URL}}引用本地环境中的URL变量、{ {booy}} { {type}} 用于参数化,来自txt文件中的第3列和第4列。

3. 编写前置脚本,用于从txt文件取值

var book = "人间失格"; 是定义一个默认值 用于不读取文件时进行测试

data.book就是取txt文件的book列(也可以写成data["book"])

pm.environment.set("book", book); 就是生成一个环境变量"book",值是js变量book(指向data.book)

console.log("执行用例: " + Case); 打印日志,Case指向(data.Case)

//获取book参数
var book = "人间失格";
if(data.book){
    book = data.book
}
pm.environment.set("book", book);

//获取book参数
var type = "1";
if(data.type){
    type = data.type
}
pm.environment.set("type", type);

//获取Case用例名
var Case = "Debug";
if(data.Case){
    Case = data.Case
}
pm.environment.set("Case", Case);

//获取Assertion断言内容
var Assertion = "0";
if(data.Assertion){
    Assertion = data.Assertion
}
pm.environment.set("Assertion", Assertion);

//打印日志
console.log("执行用例: " + Case);


4. 编写测试脚本(断言)

//状态码
pm.test("断言: HTTP状态码 200", function () {
    pm.response.to.have.status(200);
});

//响应时间
pm.test("断言: 响应时间 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);
});

//自定义断言
var Assertion = pm.environment.get("Assertion");
var responseData = JSON.parse(responseBody);
if(responseData.errcode == Assertion){
    tests["断言: errcode " + Assertion] = true;
}
else{
    tests["断言: errcode " + Assertion] = false;
}

5. 请求一次

6. 自动化测试

顶部工具栏->Collection->Runner

Environment 切换测试环境、Iterations 请求数量、Data 选择文件(刚才的txt文件)、选择text/csv格式

这时可以预览数据池

测试结果

会话详情

日志

顶部工具栏->View->Show Postman Console

四、Jmeter篇:

1. 配置环境

2. 编写接口信息

3. 取值 (Debug时启动用户参数赋值、禁用CSV。正式测试时禁用用户参数,启用CSV数据文件,循环次数开启永远)

4. 断言

5. 请求一次

6. 自动化测试

测试报告

五、对比结果:

1. 从编写速度来看,Postman和Jmeter都很快,我只花了几分钟。

2. 从可扩展性来看,Jmeter写的话,脚本可以直接拿来测压力。

3. 从编写感受来看,Postman每个页面连接性不强,但胜在美观。Jmeter编写时各元件查看很方便。

4. 从上手难度来看,Postman需要写少了js语句,但其实不难。Jmeter则基本可以靠图形界面选择设置。

5. 从报告易读性来看,Postman本身测试结果很清晰,本身但不能导出报告。Jmeter 查看结果树很简明,还可以生成图文报告。

但是!

使用过程中发现,Postman有一个致命伤,就是一次测试只能读取一个CSV文件,所以接口都会使用这个文件。所以要么把txt设计的很通用,要么就得单个接口单个接口Runner。但是Jmeter没有这个问题,每个线程组都可以放一个接口适用的CSV数据池。编写完十几个接口后,一键执行。并且Postman的请求次数需要手动指定,Jmeter可以配合CSV设置无数据后自动停止。所以如果真的要编写一个适合长期一键执行的脚本,还是Jmeter更合适。

最后附上最近写的一个脚本,基本也是这个编写思路。

猜你喜欢

转载自blog.csdn.net/tomoya_chen/article/details/81252884
今日推荐