在 Allure 报告中,
environment.properties
是一个用于定义测试环境信息的配置文件。该文件可以包含各种与测试环境相关的属性和值,如操作系统、浏览器版本、测试数据等。这些信息将被包含在报告中,以提供关于测试运行环境的上下文信息。
在 allure 测试结果目录创建 environment.properties
文件。
配置信息:
Browser=Chrome(119.0.6045.124)
Python=3.8
# test-results 为收集测试结果的目录。
allure serve test-results
在 Allure 报告中,
categories.json
是一个用于定义测试结果分类和筛选的配置文件。该文件可以帮助你在报告中将测试用例按照不同的维度进行分类和过滤,以便更好地组织和分析测试结果。
categories.json
文件。categories.json
结构:[
{
"name":"Category Name",
"matchedStatuses":[
"status1",
"status2"
],
"messageRegex":"regex pattern",
"traceRegex":"regex pattern"
}
]
passed
、failed
、broken
、skipped
等,也可以是自定义的状态。[
{
"name": "忽略的用例",
"matchedStatuses": ["skipped"]
},
{
"name": "产品缺陷",
"matchedStatuses": ["failed"]
},
{
"name": "用例本身问题",
"matchedStatuses": ["broken"]
}
]
@allure.step()
是 Allure 框架提供的一个装饰器,可以将一个方法或函数标记为测试步骤。它有助于通过将测试用例拆分为较小的可管理步骤来组织和记录测试。
import allure
@allure.step("步骤1:登录系统")
def login(username, password):
pass
@allure.step("步骤2:进行搜索")
def search(keyword):
pass
@allure.step("步骤3:验证结果")
def verify_result():
pass
def test_example_01():
# 使用步骤
login("username", "password")
search("keyword")
verify_result()
assert 1 + 1 == 2
def test_example_2():
assert 1 + 1 == 3
pytest --alluredir=test-results
allure serve test-results
allure.attach()
是 Allure 框架提供的一个函数,用于在测试报告中添加附件。它可以用于添加任何类型的文件、截图、日志等与测试相关的附件信息。
import allure
def test_example():
# 执行一些测试步骤。
assert 1 + 1 == 2
# 1.添加文件作为附件。
allure.attach.file("log/test.log", name="test.log", attachment_type=allure.attachment_type.TEXT)
allure.attach.file("imgs/1.png", name="1.png", attachment_type=allure.attachment_type.PNG)
# 创建带有超链接的文本。
link_text = 'baidu'
# 2.添加带有超链接的文本作为附件。
allure.attach(link_text, name='Example Link', attachment_type=allure.attachment_type.HTML)
pytest --alluredir=test-results
allure serve test-results
@allure.description()
是一个装饰器,可以用于添加描述信息到 Allure 报告中的测试用例。此外,也可以通过在函数下方添加注释达到一样的效果。
import allure
@allure.description("这是 test_example_01 的描述。")
def test_example_01():
assert 1 + 1 == 2
def test_example_02():
"""
这是 test_example_02 的描述。
"""
assert 1 + 1 == 2
pytest --alluredir=test-results
allure serve test-results
@allure.title()
是一个装饰器,用于为 Allure 报告中的测试用例设置标题。
import allure
import pytest
# 1.测试数据。
data = [
["正向用例", "root", 666666],
["密码错误", "root", 888888],
["用户名传空", "", 888888],
]
# 2.执行测试时,参数化标题名。
@allure.title("登录: {title}")
@pytest.mark.parametrize("title,user_name,password", data)
def test_login(title, user_name, password):
user_name = str(user_name)
password = int(password)
assert user_name == "root" and password == 666666
pytest --alluredir=test-results
allure serve test-results
@allure.link()
是一个装饰器,用于在 Allure 报告中添加链接。
import allure
@allure.link("https://www.baidu.com", name="这是普通的网站访问链接。")
def test_example_01():
assert 1 + 1 == 2
@allure.link("https://www.zentao.net", name="这是禅道的缺陷管理链接。")
def test_example_02():
assert 1 + 1 == 2
@allure.link("https://testlink.org/", name="这是用例管理平台的用例链接。")
def test_example_03():
assert 1 + 1 == 2
pytest --alluredir=test-results
allure serve test-results
@allure.epic()
,@allure.feature()
和@allure.story()
是 Allure 的特性标签,用于在测试报告中提供更多的上下文信息,以便更好地组织和理解测试结果。
import allure
@allure.epic("1号项目")
@allure.feature("登录模块")
class TestLogin:
@allure.story("登录用例-01")
def test_case_01(self):
assert True
@allure.story("登录用例-02")
def test_case_02(self):
assert False
@allure.epic("1号项目")
@allure.feature("商城模块")
class TestCommodity:
@allure.story("商城用例-01")
def test_case_01(self):
assert False
@allure.epic("2号项目")
@allure.feature("搜索模块")
class TestSearch:
@allure.story("搜索用例-01")
def test_case_01(self):
assert True
pytest --alluredir=test-results
allure serve test-results
epic 是最高级别的概念,表示整个项目或产品的大型功能或目标;
feature 是在 epic 下的子级别,表示产品的功能模块;
而 story 是在 feature 下的子级别,表示具体的用户故事或需求。
测试用例可以属于一个 epic、一个 feature 或一个 story。
通过使用这些装饰器,可以将测试用例组织和分类到不同的 epic、feature 和 story 中,从而更好地组织和展示测试报告,提供更清晰和结构化的测试结果。
可以使用命令行方式指定运行特定的 epic、feature 或 story。
# 指定 epics 运行。
pytest --alluredir=test-results --allure-epics="1号项目"
# 指定 feature 运行。
pytest --alluredir=test-results --allure-features="登录模块"
# 指定 story 运行。
pytest --alluredir=test-results --allure-stories="登录用例-02","搜索用例-01"
# 指定 feature + story。
pytest --alluredir=test-results --allure-features="登录模块" --allure-stories="搜索用例-01"
@allure.severity
是 Allure-pytest 插件提供的一个装饰器,用于定义测试用例的严重程度或优先级。通过指定不同的严重程度,可以将测试用例分类为不同的优先级,以便更好地管理和报告测试结果。
常用的严重程度包括:
blocker
:阻塞级别,表示测试用例的失败会阻塞系统的正常功能。critical
:关键级别,表示测试用例的失败会导致系统的关键功能受影响。normal
:普通级别,表示测试用例的失败对系统的功能影响较小。minor
:次要级别,表示测试用例的失败对系统的功能影响很小。trivial
:微不足道级别,表示测试用例的失败对系统的功能影响几乎可以忽略。代码示例:
import allure
def login():
return False
def registration():
return True
@allure.severity("critical")
def test_login():
assert login() == True
@allure.severity("normal")
def test_registration():
assert registration() == True
pytest --alluredir=test-results
allure serve test-results
# 只运行 critical 的测试用例。(多个级别用逗号拼接)
pytest --alluredir=test-results --allure-severities=critical
allure.dynamic
是 Allure 报告中的一个装饰器,用于在测试执行期间动态生成附加信息( attachments )。它允许您在测试运行期间生成、更新或删除附加信息,并将其与测试用例关联。
allure.dynamic.feature
allure.dynamic.link
allure.dynamic.issue
allure.dynamic.testcase
allure.dynamic.story
allure.dynamic.title
allure.dynamic.description
import allure
@allure.title("装饰器标题")
def test_example():
assert True
allure.dynamic.title("动态标题")
pytest --alluredir=test-results
allure serve test-results
在使用 pytest 运行测试用例生成 Allure 报告时,如果测试用例的名称修改后重新运行,或者分别运行不同的测试用例文件但将 Allure 报告生成到同一个目录,Allure 报告会保留历史运行记录并同时显示两个文件的测试用例运行情况。
--clean-alluredir
是 Allure-pytest 插件提供的一个命令行参数,用于清空 Allure 报告生成目录中的历史数据和文件。pytest --alluredir <报告目录路径> --clean-alluredir
--clean-alluredir
参数会删除报告目录中的所有文件和子目录,包括历史报告、附件和其他生成的文件。确保在使用此参数之前备份重要的报告数据,以防止数据丢失。上面都是基于
.json
测试结果文件动态生成的报告。接下来我们可以通过更加完整的命令,生成静态样式的报告文件。
# 1.初始化生成测试结果。
pytest --alluredir=test-results --clean-alluredir
# 2.生成 allure 的 html 报告。
# 将位于 test-results 目录下的测试结果数据生成 Allure 报告,并将报告文件保存到 allure-report 目录中。
# -c:在生成之前,会先清除报告目录中的旧文件。
allure generate -c test-results allure-report
# 3.打开 allure 报告。
allure open allure-report
# 4.关闭服务。
ctrl + c
输入 "y" 或者 "Y"
index.html
打开报告。“-------怕什么真理无穷,进一寸有一寸的欢喜。”
微信公众号搜索:饺子泡牛奶。