一. 背景html
数据驱动Data Driven Testing(DDT),是一种用于建立自动化测试的方法,或者说是一种架构, 本质是输入数据和用这些数据获取测试结果, 使测试逻辑和测试数据分离.正则表达式
DDT的优势是测试工程师没必要为每个输入数据建立一个单独的测试用例, 测试在一个实例中建立, 而且输入测试数据和预期结果在表格文件中获取.数据库
二. Jmeter 数据驱动api
首先建立url.csv文件做为输入测试数据, 内容以下:微信
以上内容保存退出后也能够用文本编辑器编辑, 注意标点符号架构
我是mac os, 保存目录为/Users/louiezhou/home/url.csvapp
csv数据设置文件中要用到这个路径编辑器
被测接口以下:ide
get方法: https://postman-echo.com/get?foo1=bar1 post
post方法: https://postman-echo.com/post 入参{"foo1":"bar1","foo2":"bar2"}
API文档来源: https://docs.postman-echo.com/?version=latest#078883ea-ac9e-842e-8f41-784b59a33722
接下来到jmeter里, 首先建立一个线程组
在该线程组下建立一个普通http请求, 命名为postman-echo_header, 用于和数据驱动比较
添加一个循环控制器
循环数量和数据表格文件中用例数量推荐保持一致.
在循环控制器下添加csv 数据文件设置
在循环控制器下添加if 控制器,命名为if_get
jmeter 5.0 + 版本, if控制器和old version 略有不一样.
此处添加if主要是判断若是是get方法就走这个if_get控制器, 若是是post方法, 就走if_post控制器.
在if_get控制器下添加一个http请求
命名规则为: ${caseSeq}_${apiSeq}_${apiName}
用例编号_API版本_API名称, 这样命名更为直观,便于理解
${apiType} =https 为API请求协议
${host} =postman-echo.com 在用户自定义变量中定义
${url}=/get
${param}= foo1=bar1
拼接完整的是: https://postman-echo.com/get?foo1=bar1
再来看if控制器的if_post
仍然是在循环控制器下新建一个if控制器,命名为if_post
在if_post下新建一个http请求, 命名规则同if_get下http一致
${param}={“foo1”:”bar1”, “foo2”:”bar2”}
拼接完整的请求是:
https://postman-echo.com/post
POST data:
{"foo1":"bar1","foo2":"bar2"}
由于是post方式, 入参方式与get有所区别, 所以还须要在该http下声明一个http信息管理头
主流程到这里就完成了, 接下来看下零碎的地方
给每一个http请求加上断言
虽然他们的预期值都是变量${expectValue}, 但实际值是不一样的
用例C001的预期值:${expectValue}: foo1=bar1
用例C002的预期值${expectValue}:foo2=bar2
用例C003的预期值${expectValue}: {“foo1”:”bar1”,”foo2”:”bar2”}
再来看下用户自定义变量
目录层级结构
添加相应的监听便可执行了.
接下来看执行结果
在数据表格文件中还有些参数没有用到, 好比priority字段, 能够根据需求适当添加相应判断, 本篇幅仅为抛砖引玉, 如您有更好的idea, 欢迎抛过来.
最后来一碗鸡汤:
你如今的生活水平,是你三年前的工做状态决定的;而你如今的努力程度,会决定你三年后的生活;软件行业是个逆水行舟,不进则退的行业,既然选择了这个行业,那么就要努力地“敲”下去。
今日精选推荐
咨询工做加微信
扫描二维码
欢迎自荐和推荐, 须要的微信推送简历!
请猛戳下面二维码了解更多