数据驱动

Jmeter中数据驱动与Postman中的数据驱动原理一样,也是通过csv文件进行数据驱动

创建csv数据
testdata.csv
token,title,tab,content ,helloworld,ask,你好呀! xxxxyyyyzzzz,helloworld,ask,你好呀! 9b6f12be-b73e-4a71-b137-3781d550bd86,,ask,你好呀! 9b6f12be-b73e-4a71-b137-3781d550bd86,helloworld,,你好呀! 9b6f12be-b73e-4a71-b137-3781d550bd86,helloworld,ask, 9b6f12be-b73e-4a71-b137-3781d550bd86,你好呀!,ask,你好呀!

创建请求

创建线程组,在【线程组】中创建【http请求】
JMeter自动化 - 图1

添加csv数据文件配置

在【线程组】—【右键】—【添加】—【配置元件】—【csv数据文件设置】
JMeter自动化 - 图2
在csv文件配置选择对应的文件,以及配置
JMeter自动化 - 图3

在脚本中引用变量

JMeter自动化 - 图4

设置线程数运行

在线程组设置线程数, 线程数根据数据文件中数据行数来确定。
JMeter自动化 - 图5

在线程组中添加【察看结果树】 执行
JMeter自动化 - 图6

响应断言

断言的原理类似于 编写测试用例中的预期结果;

创建请求

创建新的线程组,在线程组下创建Http请求

JMeter自动化 - 图7
这个请求可以发送成功,
平时验证这个结果的时候,

  1. 状态码应为200
  2. 返回结果中 success对应值为 true, topic_id 字段有值

添加断言

在【发布话题请求上】—【右键】—【添加】—【断言】—【响应断言】
JMeter自动化 - 图8

添加状态码为200 的断言
JMeter自动化 - 图9

添加断言结果

在【线程组】—【右键】—【添加】—【监听器】—【断言结果】
JMeter自动化 - 图10
当断言失败的时候,断言结果中会有对应的错误提示,如果断言没有错误,那就没有提示
下面是断言失败的时候的提示
JMeter自动化 - 图11

下面是断言成功
JMeter自动化 - 图12

json断言

在接口测试过程中,除了使用响应断言之外 还可以使用json断言来对数据进行验证;

线程组中 添加 http请求
JMeter自动化 - 图13
Http请求的结果是
{“success”:true,”topic_id”:”60c05919e69560453709698f”}
在服务器返回的结果中, topic_id 的值每次都不一样

添加json断言

在请求上—【右键】—【添加】—【断言】—【JSON断言】
JMeter自动化 - 图14
json断言
JMeter自动化 - 图15

Assert JSON Path exits: $[“topic_id”]
JMeter自动化 - 图16

添加断言在测试过程中不是必须要加,如果不加断言,执行完成之后 有人工来验证,主要验证

  1. 状态码
  2. 服务器返回的结果

如果要自动化的方式来做,就必须要断言;


postman添加断言

在Postman中添加请求
JMeter自动化 - 图17
在Tests面板中添加断言

  1. 对状态码添加断言

pm.test(“状态码为 200”, function () { pm.response.to.have.status(200); });

  1. 对服务器返回的结果进行断言

pm.test(“状态码为 200”, function () { pm.response.to.have.status(200); }); // 对服务返回的文本结果进行断言 pm.test(“响应文本结果断言”, function () { pm.expect(pm.response.text()).to.include(‘“success”:true’); });

  1. 使用json value的方式进行验证

pm.test(“状态码为 200”, function () { pm.response.to.have.status(200); }); // 对服务返回的文本结果进行断言 pm.test(“响应文本结果断言”, function () { pm.expect(pm.response.text()).to.include(‘“success”:true’); }); pm.test(“topic_id的值不为空”, function () { // pm.response.json() 表示整个服务器返回的结果 值赋给变量 jsonData var jsonData = pm.response.json(); // to.not.eql(null) 不为空 pm.expect(jsonData[“topic_id”]).to.not.eql(null); });
关于断言
更多了解: https://www.chaijs.com/api/bdd/


断言 接口发送异常数据 服务器会返回对应的错误提示;
JMeter自动化 - 图18
添加 断言
pm.test(“检查点:状态码=400”, function () { pm.response.to.have.status(400); }); pm.test(“success对应值为false”, function () { var jsonData = pm.response.json(); pm.expect(jsonData[“success”]).to.eql(false); }); pm.test(“error_msg对应的值为 必须选择一个版块”,function(){ var jsonData = pm.response.json(); pm.expect(jsonData[“error_msg”]).to.eql(“必须选择一个版块”) })


newman 工具命令行执行

安装node.js

JMeter自动化 - 图19
点击【next】
JMeter自动化 - 图20JMeter自动化 - 图21JMeter自动化 - 图22JMeter自动化 - 图23JMeter自动化 - 图24JMeter自动化 - 图25

安装newman 命令行工具

在命令行中 执行
npm install -g newman
安装Newman命令
JMeter自动化 - 图26
会从网上自动下载安装
JMeter自动化 - 图27
安装生成html报告工具
npm install -g newman-reporter-html
JMeter自动化 - 图28
安装成功之后有对应的提示

运行

newman run C:\Users\zengy\Desktop\断言练习.postman_collection.json -r cli,html
JMeter自动化 - 图29
若有收获,就点个赞吧