pytest + allure 怎么在测试报告中标记每一个步骤是passed还是failed ?
使用allure.step()方法来显示具体步骤的信息时,无论结果是什么都会显示绿色的勾,也就是passed。
我想在测试的每一步里判断是passed 还是 failed,并且能自定义输出的提示信息。
例如:
(x) 期望值应该是1, 实际值是0。
有办法实现吗?
参考chatgpt
你可以使用pytest和allure结合来实现在测试报告中标记每个步骤是通过还是失败,并自定义输出提示信息。下面是一种可能的实现方式:
首先,确保你已经安装了pytest和allure插件。你可以使用以下命令进行安装:
pip install pytest
pip install allure-pytest
在你的测试代码中,使用@allure.step装饰器来标记每个步骤,并在每个步骤中判断是否通过。
下面是一个示例测试用例:
import allure
import pytest
@pytest.mark.parametrize("expected, actual", [(1, 1), (1, 0)])
def test_example(expected, actual):
with allure.step("检查值是否相等"):
if expected == actual:
allure.attach("期望值: {}, 实际值: {}".format(expected, actual), "检查结果")
else:
allure.attach("期望值: {}, 实际值: {}".format(expected, actual), "检查结果")
assert False, "期望值应该是{},实际值是{}".format(expected, actual)
在上述示例中,使用@allure.step装饰器定义了一个步骤,并在步骤内部根据条件判断是否通过。如果断言失败,则会抛出AssertionError并显示自定义的错误消息。
运行测试。你可以使用以下命令运行测试:
pytest --alluredir=allure-results
生成测试报告。运行上述命令后,会在当前目录下生成一个allure-results文件夹。使用以下命令生成测试报告:
allure serve allure-results
这将会启动一个本地的服务,并在浏览器中打开测试报告页面。
在生成的测试报告中,每个步骤都会显示为绿色的勾(passed)或红色的叉(failed),并且你可以看到自定义的提示信息。
不知道你这个问题是否已经解决, 如果还没有解决的话:Feature: 标注主要功能模块
Story: 标注Features功能模块下的分支功能
Title:标题,可以理解为用例名称
Severity: 标注测试用例的重要级别
Allure中对严重级别的定义:
1、 Blocker级别:中断缺陷(客户端程序无响应,无法执行下一步操作)
2、 Critical级别:临界缺陷( 功能点缺失)
3、 Normal级别:普通缺陷(数值计算错误)
4、 Minor级别:次要缺陷(界面错误与UI需求不符)
5、 Trivial级别:轻微缺陷(必输项无提示,或者提示不规范)
Step: 标注测试用例的重要步骤
Description:用于描述测试用例的的文本
Issue和TestCase: 标注Issue、Case,可加入URL
attach 可以附加各种格式的文件
可以使用pytest的fixture机制和allure的@step装饰器来实现在测试报告中标记每一个步骤的执行结果并自定义输出提示信息的需求。下面是具体的解决方案:
import pytest
import allure
@pytest.fixture
def step():
pass
@allure.step
def open_browser(step):
print("打开浏览器")
step("打开浏览器")
@allure.step
def login(step):
print("登录百度首页")
step("登录百度首页")
@allure.step
def search(value, step):
print("搜索:", value)
step("搜索:" + value)
def test_demo01(step):
open_browser(step)
login(step)
search("python", step)
def test_demo02(step):
open_browser(step)
login(step)
search("java", step)
pytest -s --alluredir=./temp
allure generate ./temp -o ./report
以上是一种实现方案,具体的实现方式可能还需要根据项目的需求进行调整和定制,但是基本思路是使用pytest的fixture机制和allure的@step装饰器来标记每一个步骤并输出自定义提示信息。