allure的特性
- allure支持pytest自带的特性
- fixture、parametrize、xfail、skip
- allure提供了很多特性(装饰器)
- allure可以将这些特性信息写入到测试报告中
- @allure.suite、@allure.epic、@allure.feature、@allure.story
- @allure.severity
- @allure.link、@allure.testcase、@allure.issue
- @allure.title、@allure.description、@allure.step
测试集特性
- @allure.suite('某用例所属的测试集名称')
- @不能省略
- 指定一个pytest测试用例所属的测试集名称,一般是包名(默认)、模块名(默认)或自定义名称(代替模块名)
- 对于suite修饰的pytest测试用例,suite只执行一次,不同pytest测试用例如果写相同的suite特性,则在报告中合并显示
- 只能放在函数、方法、类之前,只对修饰的函数、方法、类起作用
- 不能使用参数化的参数
模块特性
- @allure.epic('某用例所属模块')
- 一般代表用例中的模块或一级功能
- 对于epic修饰的pytest测试用例,epic只执行一次,不同pytest测试用例如果写相同的epic特性,则在报告中合并显示
- 只能放在函数、方法、类之前,只对修饰的函数、方法、类起作用
- 不能使用参数化的参数
功能特性
- @allure.feature('某用例所属功能')
- 代表用例中的二级功能或子功能
- 对于feature修饰的pytest测试用例,feature只执行一次,不同pytest测试用例如果写相同的feature特性,则在报告中合并显示
- 只能放在函数、方法、类之前,只对修饰的函数、方法、类起作用
- 不能使用参数化的参数
- @allure.story('某用例所属的功能点或测试点')
- 代表用例中的功能点或测试点
- 对于story修饰的pytest测试用例,story只执行一次,不同pytest测试用例如果写相同的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_as02.py,测试add、sub函数,添加测试集特性、模块特性、功能特性
add_cases=[[1,2,3], [2,0,2], [-1,-2,-3], [-2,0,-2]]
@pytest.mark.parametrize('a, b, expect', add_cases)
@allure.suite('计算器加法测试')
@allure.epic('计算器算数运算-epic')
@allure.feature('计算器加法运算-feature')
@allure.story('加法测试-story')
def test_add(a,b,expect):
actual=add(a, b)
assert actual==expect, f'预期:{a}+({b})={expect},实际:{a}+({b})={actual}'
sub_cases=[[1,2,-1], [2,0,2], [-1,-2,1], [-2,0,-2]]
@pytest.mark.parametrize('a, b, expect', sub_cases)
@allure.suite('计算器减法测试')
@allure.epic('计算器算数运算-epic')
@allure.feature('计算器减法运算-feature')
@allure.story('减法测试-story')
def test_sub(a,b,expect):
actual=sub(a, b)
assert actual==expect, f'预期:{a}-({b})={expect},实际:{a}-({b})={actual}'
测试报告中的测试集、模块和功能
编写测试代码文件ceshi_calc_div02.py,测试div函数,添加测试集、模块和功能特性
import pytest, allure
from calc import div
div_cases=[[1,2,0.5], [2,0,'除数不能为零'], [-1,-2,0.5], [0,2,0]]
@pytest.mark.parametrize('a, b, expect', div_cases)
@allure.suite('计算器除法测试')
@allure.epic('计算器算数运算-epic')
@allure.feature('计算器除法运算-feature')
@allure.story('除法测试-story')
def test_div(a, b, expect):
actual=div(a, b)
assert actual==expect, f'预期:{a}-({b})={expect},实际:{a}-({b})={actual}'
测试报告中的测试集、模块和功能
小结
- epic:一级模块、一级功能
- feature:二级模块、二级功能
- story:三级功能、功能点
- feature:二级模块、二级功能
- suites:测试集
- 默认显示为包名或模块名
- 自定义测试集名会覆盖包名或模块名