专栏文章 jmeter 数据驱动 +allure 生成测试报告

飞天小子的性能课堂 · 2023年02月01日 · 最后由 lotuscase 回复于 2023年02月01日 · 6987 次阅读

一、Jmeter 接口自动化框架设计

1、框架概述

Jmeter 从本地 Excel 文件中读取用例参数,执行过程中将返回结果与预期值作对比,判断用例是否通过,最后将所有结果回写 Excel。

2、依赖 jar 包配置

将下面这些 jar 包配置到 jmeter 的 lib 目录下
Apache POI 3.17
Apache POI-OOXML 3.17
Apache Commons IO 2.6
OOXML 模式 1.3
commons-collections4-4.1
xmlbeans-2.6.0

3、用例文件设计

在本地 jmeter 目录下创建一个 excel 文件,标题如下

• ID - 用例 ID
• Case - 用例名称
• parameter- 接口参数
• request - 接口地址
• Method - 请求方法
• ExpectedResult - 预期结果
• ActualResult - 实际结果
• ResponseCode 响应码
• Status - 实际值与预期值对比之后,得出的运行结果

4、框架结构设计

4.1、测试计划中定义用例文件读取路径

4.2、添加一个 JSR223 采样器,根据 excel 文件创建一个 Workbook 对象

4.3、添加一个 While 控制器
While 控制器用于 Excel 文件包含输入数据的行数,作为发送请求的次数
在 While Controller 中,添加以下代码,用于停止 While Controller
${__javaScript("${stopWhile}"!="OK")}
用例执行完最后一行之后,会返回 一个 OK。while 读取到 OK 之后跳出循环体,否则会继续循环

4.4、添加一个计数器,用于控制循环体

4.5、添加一个 JSR223 采样器,从单元格值中获取参数,并将这些值存储在变量中

4.6、添加一级判断,用来判断请求方法,自定义 POST,GET,DELETE

4.7、添加二级判断,用来判断登录,新增相关的接口,因为需要提取关联参数。
例如读取到 Case 名称为登录的接口,就提取登录 session,然后保存到系统属性,方便后续关联

4.8、添加 http 请求,在控制器下循环读取用例中的参数

4.9、提取响应信息,作为后期的实际值来断言

4.10、添加 BeanShell 断言
比较实际结果和预期结果,在 Excel 中记录响应实际值,响应状态和用例通过状态

框架完整结构

用例执行结果

二、Allure 集成

pip 加速
执行 %APPDATA%
新建 pip 目录和 pip.ini 文件
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
trusted-host=mirrors.aliyun.com

安装 allure 包,配置环境变量

allure-commandline-2.17.3
pip 安装 allure
pip install allure-pytest

jmeter 配置文件修改
user.properties 下添加这些内容
jmeter.save.saveservice.output_format=xml
jmeter.save.saveservice.response_data=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.responseHeaders=true

Jmeter 生成 jtl 文件
jmeter -n -t TestCase.jmx -l test.jtl

Python 解析 Jtl 文件,生成 Allure 报告文件

执行 allure serve ./result-test 打开报告

三、框架执行条件

1、Jmeter 自动化用例文件
2、Jmeter 增强代码包
3、Jmeter 自动化框架脚本
4、python 解析 jtl 的代码
5、对 jmeter 元件的深入了解

备注:这个框架做的其实有很多缺陷,目前只能算是 1.0 版本,需要持续迭代优化。

再备注一条:用 Python 或者用 Jmeter 做自动化其实我都无所谓,因为我根本不做自动化,弄这个东西纯纯是个人爱好而已,不引战哦!

免费提供自编的《性能笔试 80 题》,需要的联系微信 uhz2008

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 1 条回复 时间 点赞

用 jmeter 还不容用 Python 执行用例,我是发现了现在越来越多的人焦虑了,都是不知道该学哪一个

飞天小子的性能课堂 关闭了讨论 02月02日 09:03
飞天小子的性能课堂 重新开启了讨论 02月02日 09:10
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册