2016-09-20 8 views
0

pytestを使用してhtmlレポートをカスタマイズしようとしています。私はのようなディレクトリ構造を持っている場合 はたとえば、:py.testを使用して生成されたhtmlレポートファイルをカスタマイズする方法は?

tests 
    temp1 
     test_temp1.py 
    conftest.py 

conftest.pyファイルがテストディレクトリにもあり、それはテストのディレクトリ内のすべてのサブディレクトリに共通する必要があります。

py.testテスト/ TEMP1/test_temp1.py --html = report.htmlを:私は、次のコマンドを使用して生成されたHTMLファイルの内容を変更するconftest.pyに使用することができますどのような器具やhookwrappers

+0

pytest-htmlプラグインを使用していますか? –

答えて

3

pytest-htmlのようなプラグインを使用しているようです。 その場合、すべてのフックが提供されているかどうかのプラグインのドキュメントを確認してください。用

pytest-htmlのフックが提供される以下の あなたは、固定具からrequest.config._html.environmentを変更することで、レポートの環境セクションを変更、追加することができます

@pytest.fixture(autouse=True) 
def _environment(request): 
    request.config._environment.append(('foo', 'bar')) 

は、あなたが「余分を作成することにより、HTMLレポートに詳細を追加することができます'リストを作成します。次の例では、プラグインやconftest.pyファイルに実装することができますpytest_runtest_makereportフックを使用して余分の様々なタイプを追加します:

import pytest 
@pytest.mark.hookwrapper 
def pytest_runtest_makereport(item, call): 
    pytest_html = item.config.pluginmanager.getplugin('html') 
    outcome = yield 
    report = outcome.get_result() 
    extra = getattr(report, 'extra', []) 
    if report.when == 'call': 
     # always add url to report 
     extra.append(pytest_html.extras.url('http://www.example.com/')) 
     xfail = hasattr(report, 'wasxfail') 
     if (report.skipped and xfail) or (report.failed and not xfail): 
      # only add additional html on failure 
      extra.append(pytest_html.extras.html('<div>Additional HTML</div>')) 
     report.extra = extra 
+0

ありがとう、私はそれを試して、それは働いた。しかし、もし私が現在のものより多くのhtml要素を追加したいのであれば?たとえば、既存のテーブルとカラムを追加したいとします。どこで詳細を知ることができますか? – Mickstjohn09

+0

コードが下の場所にあるため、必要に応じて機能を変更または上書きできます。 'Python27 \ Lib \ site-packages \ pytest_html' –

+1

saurabhは、' request.config._environment.append(( '' foo '、' bar ')) 'が** Environment **テーブルを変更できることを確信していますか? pytest-htmlの最新版でも 'config'でも' HTMLReport'にも '_environment'があります。 –

1

UPDATE:最新バージョンでは、あなたがしたい場合に環境テーブルを変更しますhtmlレポート、conftest.py次のコードに追加:

@pytest.fixture(scope='session', autouse=True) 
def configure_html_report_env(request) 
    request.config._metadata.update(
     {'foo': 'bar'} 
    ) 
関連する問題