一、前言
Allure框架是一个灵活的轻量级多语言测试报告工具,它不仅以web的方式展示了简介的测试结果,而且允许参与开发过程的每个人从日常执行的测试中最大限度的提取有用信息
从dev/qa的角度来看,Allure报告简化了常见缺陷的统计:失败的测试可以分为bug和被中断的测试,还可以配置日志、步骤、fixture、附件、计时、执行历史以及与TMS和BUG管理系统集成,所以,通过以上配置,所有负责的开发人员和测试人员可以尽可能的掌握测试信息。
从管理者的角度来看,Allure提供了一个清晰的“大图”,其中包括已覆盖的特性、缺陷聚集的位置、执行时间轴的外观以及许多其他方便的事情。allure的模块化和可扩展性保证了您总是能够对某些东西进行微调,使Allure更适合您,那么今天我们就来说说如何使报告更加详细的显示我们需要的信息,以及allure与jenkins的集成
- Feature: 标注主要功能模块
- Story: 标注Features功能模块下的分支功能
- Severity: 标注测试用例的重要级别
- Step: 标注测试用例的重要步骤
- Issue和TestCase: 标注Issue、Case,可加入URL
1、Environment
在Allure报告中添加环境信息,通过创建environment.properties或者environment.xml文件,并把文件存放到allure-results(这个目录是生成最后的html报告之前,生成依赖文件的目录)目录下
environment.properties
Browser=Chrome
Browser.Version=63.0
Stand=Production
ApiUrl=127.0.0.1/login
python.Version=3.6
或者
environment.xml
<environment>
<parameter>
<key>Browser</key>
<value>Chrome</value>
</parameter>
<parameter>
<key>Browser.Version</key>
<value>63.0</value>
</parameter>
<parameter>
<key>Stand</key>
<value>Production</value>
</parameter>
<parameter>
<key>ApiUrl</key>
<value>127.0.0.1/login</value>
</parameter>
<parameter>
<key>python.Version</key>
<value>3.6</value>
</parameter>
</environment>
这个文件需要在执行pytest -s -q –alluredir [xml_path]命令后将文件放在[xml_path]路径下,这样在执行allure generate [xml_parh] -o [report_path]生成的html格式的report才会显示相关的环境信息
2、Categories
测试报告默认统计两种类型的测试用例结果,失败的用例和故障测试用例,我们可以自定义添加用例的统计类型,同样需要在allure-results目录下新建categories.json文件
[
{
"name": "Ignored tests",
"matchedStatuses": ["skipped"]
},
{
"name": "Infrastructure problems",
"matchedStatuses": ["broken", "failed"],
"messageRegex": ".*bye-bye.*"
},
{
"name": "Outdated tests",
"matchedStatuses": ["broken"],
"traceRegex": ".*FileNotFoundException.*"
},
{
"name": "Product defects",
"matchedStatuses": ["failed"]
},
{
"name": "Test defects",
"matchedStatuses": ["broken"]
}
]
查看报告
3、@allure.step
pytest支持使用@allure.step修饰某些测试用例中需要的函数,使测试用例在allure报告中能够更加详细的显示测试过程
@allure.step("输入用户名")
def input_username(user):
print("输入用户名")
return user
@allure.step("输入密码")
def input_password(pwd):
print("输入密码")
return pwd
@allure.feature("登录模块")
class TestLogin(object):
@allure.severity(allure.severity_level.BLOCKER)
@allure.story("测试登录成功")
@allure.title("登录成功场景-{data}")
@pytest.mark.parametrize("data", login_success_data, ids=ids_login_success_data)
def test_login_success(self, data):
"""测试登