Jmeter之CSV参数设置及BeanShell对接口请求和响应数据处理(一)

jmeter接口请求写的方式,可以直接一个请求一个请求的按界面写,也可以录制,这对于针对性的测试接口正确性和检验,还需要花很多功夫,比如设置期望结果的断言。每个地方都得重复写很多东西,很是繁琐。

为了便捷的测试多个接口,使用CSV参数设置是个很好的方法,但是有的人用它只是设置几个简单参数,我的思路是它来协助我完成m个请求,每个请求n个参数,使用起来很方便。

用csv文件的一行代表一个请求的诸多参数,多行则表示多个请求。我的csv文件的模板如下(大家可以根据自己的项目实际情况的增删字段):

| myid | interfaceName | branch | caseName | myMethod | myData | myResult1 |
| -------- | ------------- | ------------- | -------- | --------- | --------- | --------- | --------- | :-------: |
| 每个用例一个id | 接口名称 | 1未登录请求 2已登录请求 | 测试描述 | 接口请求路径 | 接口请求实体内容 | 期望结果1 |
| 1 | app_logs | 1 | 查看友盟日志 | /app_logs | n1=1&n2=2 | success |

那jmeter中怎么用好这个我设计的模板,达到每个参数的意义呢?接下来手把手教你。

1.新建&配置CSV Data Set Config

测试计划-右键-添加-配置元件-CSV Data Set Config

然后配置如下截图,对应的文件路径直接写到Filename即可

2、新建&配置线程组

测试计划-右键-添加-threads(Users)-线程组

线程组配置如下图,线程数是指多少个线程同时并发,循环次数是指每个线程循环多少次

重要!!!线程组的循环次数和csv文件的请求数据行数一致(注意csv文件中的第一行为参数名,第三行为第一个请求的数据,第二行大家可以写下备注注释什么的,所以请求行是从第三行往后算)

3.新建if控制器和http请求

先讲下为什么要新建if控制器,因为我做的是app的接口测试,app接口请求可以分为两种登录前的请求(不带token请求字段的)、登录后的请求(带token请求字段的),所以在请求的时候无法共用的请求模板。

前面的csv文件中,有一列为branch,就是用在此处判断的。

3.1线程组-右键-添加-逻辑控制器-如果(If)控制器

配置如下内容即可,含义就是csv文件中,满足条件的行,会执行下面的请求模板

"${branch}"=="1"

3.2如果(If)控制器-右键-添加-sampler-http请求

这里要填的内容如下,其中用到了4个参数

${caseName}

${interfaceName}

${myMethod}

${myData}

名称:为了查看结果树的时候能够明确知道是哪个场景的测试点,哪个接口

路径:请求的域名后面接的路径,比如抓包中的请求为“POST http://alog.umeng.com/app_logs HTTP/1.1”,那么${myMethod}就应该填“/app_logs”(写在csv文件即可)

Body Data:请求的参数实体内容,一般是 name1=value&name2=value2……(写在csv文件即可)

有人看到这里有疑问了,为什么没有填服务器ip的,那是因为很多公共的参数,没什么变化的,比如host,就可以放在http请求默认值里面。

3.3测试计划-右键-添加-配置元件-http请求默认值

这里就可以把公共不变的参数和host写在这里

实际请求的参数,就会把http请求的参数和这里的参数合在一起请求

4.新建&配置响应断言

断言我这里用的是最简单的响应断言,字符串判断

http请求-右键-添加-断言-响应断言

在要测试的模式,写上对应的${myResult1},然后再如果还要多判断几个断言,可以新建断言2、断言3

用BeanShell对接口请求和响应数据处理(处理原因:比如我需要下次请求用上个请求的token字段,然后要用所有请求参数生成sign字段、字符串特殊处理等),可以点击此链接查看:http://www.jianshu.com/p/b1fac6898828
O(∩_∩)O

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容