JMeter教程:使用CSV文件完成批量接口测试

JMeter教程:使用CSV文件完成批量接口测试,第1张

        当我们在工作中进行接口测试时,项目的接口肯定不止一个,而是很多很多。而且每个接口都需要进行正确参数,错误参数,参数为空,特殊字符等各种场景来进行测试接口是否能够正确返回所需的响应值。如果需要进行回归测试,则工作量则更大了。如果只需要使用一份CSV文件完成所以的接口测试,那就更方便且更好管理接口。

        那么我们该如何通过JMeter来完成批量测试呢? 我们先建立一个较为简单的方式进行测试脚本观察一下。

        以一个获取创建订单时的【省/市/区信息】接口:api.test.XXXXXX.com/api/XXXX/XXXX/getAddress 请求方法:post 请求参数:type,code为例:

1.添加线程组

    测试计划右键选择添加——线程用户——线程组。

     Setup线程组: 用于执行预测试操作

     tearDown: 用于执行测试后操作

     线程组: 一般测试接口时添加的线程,可以把它看做一个虚拟的用户组,线程组中的每一个线程都可以理解为一个虚拟用户

2.添加HTTP信息头管理器

     线程组右键选择添加——配置元件——HTTP信息头管理器

    如果接口信息头定义了值的话,需要放到信息头管理器里面,例如:用户token,公共参数等。

3.添加HTTP请求

     线程组右键添加——取样器——HTTP请求

     协议: 默认HTTP协议,可不填写,若为HTTPS协议需要填写HTTPS。

     服务器名称或IP: 填写接口域名

     端口号: 默认HTTPS请求的80,若为HTTPS请求需要填写443

     方法: 直接选择接口的请求方法:GET,POST,PUT,DELETE即可。

     路径: 填写接口的具体路径    

     参数: 点击下方导航栏添加按钮,在已经添加的数据栏填写参数名,参数值。    

4.添加察看结果树

     线程组右键添加——监听器——察看结果树

    左边:展示请求名,绿色请求结果表示请求成功,红色请求结果表示请求失败。

    右边:展示请求值,包括取样器结果,请求头,请求体,响应头,响应体。

以上步骤能够确保接口正确的进行访问并返回对应的返回值。

完成以上步骤后,下一步就是要把上面步骤的所有的值以参数的形式传递给JMeter脚本,使我们能够以参数化的形式对接口进行批量测试。

5.添加循环控制器

     线程组右键添加——逻辑控制器——循环控制器,循环控制器添加后需要把【HTTP信息头管理器】【HTTP请求】移到【循环控制器下】

    循环次数:运行脚本后循环控制器下的HTTP请求将执行的次数。例如:循环控制器的计数为1,则发送HTTP请求1次;计数为5,则发送HTTP请求5次。设置为永远则需要手动停止请求,否则不会停止请求。

6.在循环控制器下添加CSV配置文件

     循环控制器右键添加——配置元件——CSV数据文件设置,CSV文件里面定义接口所需要动态取值的参数,例如:URL,路径,请求方法,接口参数等。

a)如何创建CSV文件?电脑桌面新建TXT文档,更名为:测试参数文档.CSV(TXT后缀需要变更为CSV),打开CSV文件新增数据。

b)文件内参数如何书写?第一行定义接口所需动态参数,自第二行起填写接口详细值。

caseSeq: 定义接口序号

apiSeq: 每个接口序列

apiName: 接口名称

url: 接口域名

api: 接口地址

function: 接口请求方法

purpose: 描述接口验证类型

parameter: 接口所需参数拼接,以:“code=500000&type=city”的形式,参数间以“&”连接

c)csv数据文件如何设置

文件名: 点击浏览后选择本地的CSV文件

文件编码: 一般情况下无需设置

变量名称:

“caseSeq,apiSeq,apiName,url,api,function,purpose,parameter”,参数之间需要用英文的逗号隔开,注意参数不要写错。

忽略首行: True则不执行CSV文件的首行,False则执行CSV文件首行。

分隔符: 英文逗号,无需变更

是否允许带引号: 设置True和False以当前CSV文件都能正常执行

遇到文件结束符再次循环: True则在设置的循环次数内一直循环,False则CSV文件所有数据循环一次后就停止。

遇到文件结束符停止线程: True则在设置的循环次数内执行到CSV文件数据为空时停止发送HTTP请求,False则在设置的循环次数内执行到CSV文件数据为空时继续执行。

线程共享模式: 选择所有现场即可

综上: 本次CSV文件设置时:循环次数“永远”,忽略首行“True”,是否允许带引号“False”,遇到文件结束符再次循环“False”,遇到文件结束符停止线程“True”,线程共享模式“所有现场”

7.其他配置文件需要修改写入形式

     HTTP信息头管理器:除必要参数外,添加:“Content-Type=application/x-www-form-urlencoded”,使用Json参数需要用到

HTTP请求:名称设置为:“${caseSeq}_${apiSeq}_${apiName}”动态取CSV文件里面配置的参数信息;IP:“${url}”;方法:“${function}”;路径:“${api}”,消息体数据:“${parameter}”消息体数据和参数只能设置一种,不能两种同时设置。

8.执行CSV文件,查看结果

     可以看到左边能够很清晰的反应接口执行的信息,右边可以很明确的反应接口返回的数据。并且CSV文件内可以设置众多接口的不同验证方式,很方便且很适合日常工作使用。希望以上内容能给大家提供帮助,谢谢。

测试过程中,经常需要批量去造数据,方法有很多,最简单方便的应该是使用python 的一个三方库Faker。

脚本作用,批量生成10000条基本数据,写入本地的文件:test_data.csv  

在linux服务器上执行,把test_data.csv 拿到本地windows,excel打开可能中文乱码,可使用:数据--从文本/CSV 导入数据,修改下编码格式,就能正常显示中文

以下为详细脚本:

import csv

from faker import Faker

import datetime

fake = Faker(['zh_CN'])

file = open("test_data.csv","w",newline="")

# 创建文件,分别是文件名、w打开方式(w代表新建,如果已存在,就删除重写)、newline(如果不加,每行数据就会多一空白行)

fwrite = csv.writer(file)

# 获取写文件的对象

fwrite.writerow(["name", "phone", "Card_id", "公司", "地址", "信用卡", "职位", "email"])

# 写入标题头

for i in range(9999):

    user_name = fake.name()

    phone = fake.phone_number()

    card_id = fake.ssn()

    company = fake.company()

    addr = fake.address()

    bank_card = fake.credit_card_number()

    title = fake.job()

    email = fake.email()

    fwrite.writerow([user_name, phone, card_id, company, addr, bank_card, title, email])

# 写入一行一行的数据

file.close()

保存为makedata.py

注意,需要先安装python3和faker,如下

#yum install python3.x86_64

#pip3 install faker


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/621359.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-15
下一篇2023-07-15

发表评论

登录后才能评论

评论列表(0条)

    保存