响应式网站建设平台,东莞现在好找工作吗,网站导航栏是什么,眉山做网站参数化实现及重复执行 参数化测试#xff1a;在接口测试中#xff0c;为了实现不同组数据对同一个功能模块进行测试#xff0c;需要准备多组测试数据对模块进行测试的过程。
在httprunner中可以通过如下方式实现参数化#xff1a;
1、在YAML/JSON 中直接指定参数列表
2、…参数化实现及重复执行 参数化测试在接口测试中为了实现不同组数据对同一个功能模块进行测试需要准备多组测试数据对模块进行测试的过程。
在httprunner中可以通过如下方式实现参数化
1、在YAML/JSON 中直接指定参数列表
2、调用debugtalk.py 中自定义的函数生成参数列表
3、通过内置的函数引用CSV 文件
4、通过debugtalk.py调用faker库、pymysql库实现参数化
从httprunner2.0开始参数化必须在 testsuites 层进行实现实现参数化的关键字为 variables、parameters
参数化实现
方式一 使用 variables 关键字实现参数化传递
通过testsuite层下testcases中的variables传递参数如下图的search_word参数可以传递至testcases层或api层相对应的$search_word中
通过 variables 关键字 再做个变量传递参数套件层 传给 用例层 再传给 api层 但每次只能传递一个参数 testsuites层必须在套件层使用 variables 做参数化如下图 testcases层如下图 api层 方式二使用 parameters 关键字实现参数化传递
通过testsuite下testcases中的parameters传递参数如下图的search_word参数可以传递至testcases层或api层相对应的$search_word中
通过 parameters关键字 再做个变量传递参数套件层 传给 用例层 再传给 api层 每次可传递多个参数参数以列表展示
只传递参数举例
testsuites层 testcases层如下图 api层 执行套件层接口后会把变量的多个参数全部执行完成如下图 注上述举例只是针对参数传递但是没办法做每个参数的断言操作可参考下方的举例
同时传递参数和预期结果 举例
通过 parameters 一次传递一组参数如下图的search_word-result参数使用 - 分隔成了两个参数分别为$search_word和$result 使用列表嵌套传输
testsuites层 testcases层 api层 方式三调用 debugtalk.py 中 自定义的函数实现参数化传递
调用 debugtalk.py 中自定义的函数生成参数列表同样也可以进行多组参数传递
debugtalk.py文件中的代码示例
# 参数化
def search_key():# return [猫,狗,大象]return [[猫,猫_百度搜索],[狗,狗_百度搜索],[大象,大象_百度搜索]]
testsuites层 testcases层 api层 由于debugtalk.py可以采用python代码的形式组织参数故可以实现各种随机参数如随机整数、随机字符串随机手机号等只要最终函数返回的数据类型能兼容即可。 随机整数、随机字符串、随机手机号 代码示例
import random # 随机整数 def get_random_param(min,max,count3): random_list [] for i in range(count): random_list.append(random.randint(min,max)) return random_list
# 随机字符串 def get_random_string(base_str,str_len,count3): random_list [] for i in range(count): str for j in range(0,str_len): str strbase_str[random.randint(0,len(base_str)-1)] random_list.append(str) return random_list
# 随机手机号 def get_random_phone(*mobile_num,count2): phone_list [] for i in range(0,count): str_start random.choice(mobile_num) str_end .join(random.sample(0123456789,8)) str_phone str(str_start) str_end phone_list.append(str_phone) return phone_list
方式四通过内置的函数引用CSV 文件实现参数化
第一步在项目的根路径下新建data文件夹在该文件夹中新建csv文件文件中填写对应的数据可以有多列需要使用英文逗号隔开。文件的第一行为参数名称第二行才是数据的开始 第二步在testsuite下testcases中通过调用内置的parameterize可简写为P函数引用CSV 文件如果要引用多个变量需要用‘-’连接
testsuites层 testcases层 api层 方法五通过debugtalk.py调用faker库实现参数化
faker库主要用来创建伪数据使用faker包无需再手动生成或者手写随机数来生成数据只需要调用faker提供的方法即可完成数据的生成。
1首先下载faker库 2在debugtalk.py中编写代码
代码示例
from faker import Faker # 随机姓名 def get_random_name(count5): f Faker(localezh_CN) name_list [] for i in range(0,count): name_list.append(f.name()) return name_list
3再通过在yaml文件中调用该函数 ${函数()}
testsuites层 testcases层 api层 方法六通过debugtalk.py调用 pymysql库 实现参数化 利用pymysql库链接并获取mysql数据的方式
前置条件
mysql数据库中的数据 在debugtalk.py中编写 链接mysql数据库的函数
代码示例
import pymysql def get_mysql_data(case_name): # 创建mysql数据库链接 db pymysql.Connect(host192.168.1.3,port3306,userroot, passwordroot,dbtest,charsetutf8) # 创建游标对象查询数据默认是元组 cursor db.cursor() # 创建游标对象查询数据默认是元组,此处设置字典类型 # cursor db.cursor(cursorpymysql.cursors.DictCursor) # 编写 sql 语句 sql select test_data,result FROM test_case_data where case_name like {}_%;.format(case_name) # 执行sql 语句并返回行数 cursor.execute(sql) # cursor.fetchone() # 一行 case_data cursor.fetchall() # 所有数据 # 关闭游标 cursor.close() # 关闭数据库链接 db.close() # 由于返回的数据是元组所以需要把元组做成List类型 list_case_data list(case_data) for i in range(len(list_case_data)): list_case_data[i] list(list_case_data[i]) return list_case_data
在套件层中引用上述的函数
testsuites层 testcases层 api层 最后感谢每一个认真阅读我文章的人礼尚往来总是要有的这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你