如何使用pytest-html将测试步骤写入生成的html报告?

时间:2018-12-24 15:36:02

标签: python pytest pytest-html

我找不到一种将字符串添加到代表测试步骤的HTML报告中的方法。

我在https://pypi.org/project/pytest-html/中看到了 我应该尝试:

extra.text('Add some simple Text')

但似乎不起作用。

from pytest_html import extras

class FirstFeatureTests:

    def setup_class(self):
        print("\n------------ in setup_class ------------")

    def teardown_class(self):
        print("------------ in teardown_class ------------")

    @mark.example
    def test_1_first_feature(self):
        print("starting test !!!!!")
        extras.text("step 1: ")
        extras.text('step 2: ')
        assert True

我希望每个测试都将包含以字符串形式表示的测试步骤,并提供正式的说明。

有什么办法吗?

2 个答案:

答案 0 :(得分:0)

在这种情况下,建议您尝试使用allure而不是pytest-html。它与pytest易于集成,并且使用起来非常舒适。

查看this repository了解更多信息。

这是usage examples的那个。

答案 1 :(得分:0)

Allure肯定具有pytest的所有测试报告功能(步骤,功能,故事等),因此更适合您的需求。但是它是用Java编写的,您需要在本地安装pytest allure以及allure二进制文件才能正常工作。而且,您可能必须跳过几个步骤才能使其在您现有的pytest代码库中起作用。

如果要使用pytest-html生成测试步骤,这是一种可能的解决方案:

# Contents of top level conftest.py
import pytest

@pytest.fixture(scope='session', autouse=True)
def step(request):
    @pytest.mark.optionalhook
    def pytest_html_results_table_html(request, report, data):
        data.append(html.div(str(request.param), class_='Step'))

#Contents of fixture or test code
def test_a(step):
    step("abc")
    assert True

我还没有在本地运行代码,但这是添加步骤的最终代码。