如何为 pytest 创建 HTML 报告?

How to create a HTML report for pytest?

我已经在 eclipse 中使用 pytest 框架创建了一个项目

class TestClass(object):
    def test_one(self):
        x = "this"
        assert 'h' in x

    def test_two(self):
        x = "hello"
        assert hasattr(x, 'check')

现在,我想为我的 project.I 创建一个 html 报告:

import pytest

@pytest.mark.hookwrapper
def pytest_runtest_makereport(item, call):
    pytest_html = item.config.pluginmanager.getplugin('html')
    outcome = yield
    report = outcome.get_result()

当我 运行 我的测试时,我没有得到任何 report.Below 我的结果符合预期,但没有生成报告

> ============================= test session starts ============================= platform win32 -- Python 3.6.5, pytest-3.6.0, py-1.5.3, pluggy-0.6.0 rootdir: D:\Eclipse1\TFCProject,
> inifile: plugins: ordering-0.5, metadata-1.7.0, html-1.19.0 collected
> 2 items
> 
> TFCPackage\pycheck.py .F                                              
> [100%]
> 
> ================================== FAILURES ===================================
> _____________________________ TestClass.test_two self = <TFCPackage.pycheck.TestClass object at 0x03778AF0>

    def test_two(self):
        x = "hello"
>       assert hasattr(x, 'check')
E       AssertionError: assert False
E        +  where False = hasattr('hello', 'check')

TFCPackage\pycheck.py:13: AssertionError
===================== 1 failed, 1 passed in 0.41 seconds ======================

请指导我,因为我是 pytest 的新手

如果您想在 Eclipse 中执行此操作 IDE,您需要更改 Eclipse 配置。

  1. Open the Configuration

    Window -> Preferences -> PyDev -> PyUnit

  2. Add this parameter in the section "Parameters for test runner"

    --html= reportname.html

将上面的 reportname 替换为您选择的报告名称。

请注意,此设置是全局的,每次在 eclipse 中 运行 pytest 时都会生成报告。