动态测试集特性
- allure.dynamic.suite('某用例所属的测试集名称')
- 动态特性放到函数或方法中
- 不建议使用allure.dynamic.suite,否则会导致测试集名称显示混乱:既包含模块名,又同时包括自定义测试集名,而正确的@allure.suite要么只有模块名,要么只有自定义测试集名
- 不支持动态epic
- 即不支持allure.dynamic.epic
动态功能特性
- allure.dynamic.feature('某用例所属功能')
- 必须放在函数、方法之内,会覆盖@allure.feature
- 可以使用参数化的参数
- allure.dynamic.story('某用例所属的功能点或测试点')
- 必须放在函数、方法之内,会覆盖@allure.story
- 可以使用参数化的参数
动态功能特性的显示优先级
- 如果写了epic,不论是否写了feature、story,则测试报告Overview部分的FEATURES BY STORIES显示epic
- 如果没有写epic,但写了feature,不论是否写了story,则测试报告Overview部分的FEATURES BY STORIES显示feature
- 如果没有写epic和feature,但写了story,则测试报告Overview部分的FEATURES BY STORIES显示story
编写测试代码文件ceshi_calc_as01.py,测试add函数、sub函数,添加动态测试集、动态功能特性
add_cases=pandas.read_excel('add_sub.xlsx').values.tolist()
@pytest.mark.parametrize('case_id, case_title, module, function, a, b, expect, severity', add_cases)
@allure.epic('计算器epic')
@allure.suite('计算器加法测试集')
def test_add(case_id, case_title, module, function, a, b, expect, severity):
# allure.dynamic.suite('计算器加法测试集')
allure.dynamic.feature(module+'-feature')
allure.dynamic.story(function+'-story')
actual=add(a, b)
assert actual==expect, f'预期结果:{a} + {b} = {expect},实际结果:{a} + {b} = {actual}'
if __name__=='__main__':
import os
pytest.main(['--alluredir=./allure-results', '--clean-alluredir', 'ceshi_calc_as01.py'])
os.system('allure.bat generate ./allure-results -o ./allure-report --clean')
测试报告Suites部分
测试报告Overview部分的Feature
测试报告Behaviors部分的Feature
编写div的excel测试用例,用例字段如下
- 用例编号、用例标题、模块、功能、被除数、除数、预期结果、优先级
- 编写测试代码文件ceshi_calc_div01.py,测试div函数,添加测试集、动态功能特性,不清除之前的测试结果
div_cases=pandas.read_excel('div.xlsx').values.tolist()
@pytest.mark.parametrize('case_id, case_title, module, function, a, b, expect, severity', div_cases)
@allure.epic('计算器epic')
@allure.suite('计算器除法测试集')
def test_div(case_id, case_title, module, function, a, b, expect, severity):
allure.dynamic.feature(module+'-feature')
allure.dynamic.story(function+'-story')
actual=div(a, b)
assert actual==expect, f'预期结果:{a} + {b} = {expect},实际结果:{a} + {b} = {actual}'
测试报告Suites部分
小结
- allure动态特性写在函数或方法之中,非动态特性写在函数或方法之外
- @allure.epic没有动态写法
- @allure.suite与allure.dynamic.suite,建议@allure.suite
- allure.dynamic.feature、allure.dynamic.story可以从用例中获得被测模块和功能名
作者:暄总-tester