pytest + allure 怎么在测试报告中标记每一个步骤是passed还是failed

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),并且你可以看到自定义的提示信息。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7502765
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:pytest+allure自动化测试and图表展示
  • 除此之外, 这篇博客: allure如何定制Pytest自动化测试报告样式中的 1、allure可定制报告 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    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 可以附加各种格式的文件

  • 以下回答来自chatgpt:

    可以使用pytest的fixture机制和allure的@step装饰器来实现在测试报告中标记每一个步骤的执行结果并自定义输出提示信息的需求。下面是具体的解决方案:

    1. 在测试用例中引入pytest和allure模块:
    import pytest
    import allure
    
    1. 创建fixture函数以便将测试步骤标记为allure的步骤:
    @pytest.fixture
    def step():
        pass
    
    1. 在测试步骤中使用@step装饰器来标记每一个步骤:
    @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)
    
    1. 修改测试用例,将测试步骤函数作为参数传递给测试步骤函数:
    def test_demo01(step):
        open_browser(step)
        login(step)
        search("python", step)
    
    def test_demo02(step):
        open_browser(step)
        login(step)
        search("java", step)
    
    1. 运行测试用例生成allure测试报告:
    pytest -s --alluredir=./temp
    allure generate ./temp -o ./report
    
    1. 打开report目录下的index.html文件,查看定制化的测试报告。

    以上是一种实现方案,具体的实现方式可能还需要根据项目的需求进行调整和定制,但是基本思路是使用pytest的fixture机制和allure的@step装饰器来标记每一个步骤并输出自定义提示信息。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^