2016-10-21 2 views
1

Ich möchte benutzerdefinierte Attribute (oder Schlüsselwörter) zu einem Test hinzufügen, auf den ich unter pytest_runtest_logreport zugreifen kann.Hinzufügen von benutzerdefinierten Schlüsselwörtern oder Testattribut

Was ich zur Zeit getan ist, einen Marker wie diese @pytest.mark.TESTID(98157) für Tests zu setzen und diese dann in pytest_runtest_logreport als report.keywords['TESTID'] verwenden, die ein Tupel liefert die Länge 1-Wert 98157. So weit so gut. Aber als ich versuchte, eine andere Markierung mit Defekt ID wie dieses @pytest.mark.JIRA("MyJIRA-124") dieser report.keywords['JIRA'] das gibt mir integer hinzufügen 1.

Also meine Frage ist, können wir nicht parametriert Marker mit string Parameter

UND

erstellen

Wenn das ist, könnte die mögliche Problemumgehung für mich sein.

Antwort

2

Leider „Bericht“ wird nicht diese Werte annimmt in Standard implmentation hat, wie es mit 1 als Wert für jede Taste nur ein dict ist (source code)

Ich denke, dass die einfachste Abhilfe wäre zu ändern, wie der „Bericht“ wird unter Verwendung von pytest_runtest_makereport Haken konstruiert. Es könnte, da dies so einfach sein:

from _pytest.runner import pytest_runtest_makereport as _makereport 


def pytest_runtest_makereport(item, call): 
    report = _makereport(item, call) 
    report.keywords = dict(item.keywords) 
    return report 

Dann in pytest_runtest_logreport unter report.keyword['JIRA'] werden Sie MarkInfo Objekt

+0

Bingo !! finden, Das ist, was ich suchte, eigentlich das gleiche hatte ich getan für 'TestID 'lange zurück, aber einige, wie ich vergessen habe, dass ich diesen Schritt für' JIRA' vergessen habe –

Verwandte Themen