基于python+pytest,是小白的学习之路,过程思路参考EVAN_HU的思路
运行测试用例
# @allure.story('')
class Test_01(object):
@pytest.mark.skipif(len(CASE) == 0, reason=skip_reason)
# @allure.story('')
@pytest.mark.parametrize('case', CASE)
def test_01(self, case):
# 执行每个测试用例的详细参数
Runcase().all_run(path=PATH, case=case)
- 运行测试用例的时候使用@pytest.mark.parametrize('case', CASE) 传递参数,因此读取参数返回的值CASE应该是测试用例Case,case返回为列表形式
- 如果返回的case长度为空,及表示跳过这个测试用例@pytest.mark.skipif(len(CASE) == 0, reason=skip_reason)
传入测试用例的yaml文件路径,读取文件内参数,返回case
class Params(object):
def __init__(self, yaml_values):
"""
yaml_values为读取yaml文件返回的值
"""
pass
def yaml_params_case(self):
self.all_skip = self.params['all_skip']
self.order_by = self.params['order_by']
# # 此用例是否跳过,bool类型true为1
if self.all_skip == 1:
return self.runcase
# 整个测试用例不跳过,而且没有执行顺序,按照从上到下的顺序执行
elif self.all_skip != 1 and self.order_by == []:
for case in self.params['testcase'].keys():
self.order_by.append(case)
self.runcase.append(case)
# 整个测试用例不跳过,单个用例有执行顺序,按照执行顺序执行
else:
self.runcase = self.order_by
# 打印执行顺序到log文件中
Logger().logs_file().debug("执行用例顺序为:" + str(self.runcase))
return self.runcase
获取case,读取详细参数
# 测试用例接口参数
def yaml_params_split(self, index):
# 单个用例是否跳过,此参数必须存在
if self.params['testcase'][index]['skip']:
skip = self.params['testcase'][index]['skip']
if skip == 1:
pytest.skip("测试用例开关未开启")
Logger().logs_file().debug(str(index) + "测试用例开关未开启")
# 休眠参数,可不存在
if 'sleep' in self.params['testcase'][index].keys():
sleep_time = self.params['testcase'][index]['sleep']
time.sleep(sleep_time)
# 此参数必须存在
if self.params['testcase'][index]['name']:
self.name = self.params['testcase'][index]['name']
# ...没有全部写入
# 将需要调用request请求得参数和check的检查值传入
YamlRequest(index=index, url=self.url, method=self.method, headers=self.headers,
body=self.body, check=self.check).yaml_request()
有两种写的方式:
第一种,可以不写入测试用例的参数:
if 'sleep' in self.params['testcase'][index].keys() 如果查不到,则返回none
第二种,必须存在的参数:
if self.params['testcase'][index]['name'] 如果查不到,则报错
每个参数逐一处理(我这个方式比较笨,有更好的不过我目前不会)
最后将请求需要的参数发到请求中(这里☞类YamlRequest)
我很菜!请求大家的意见让我成长