Ich versuche, einige Debugging (speziell auf pytest/testing/test_doctest.py) und ich möchte einige Code in IPython Schritt. Ich habe Erfahrung mit Pytest, aber ich mache nie etwas zu ausgefallenes damit, also habe ich mich nie tief in die "magischen" Dinge vertieft, die es tut. Im Test, den ich durchgehen möchte (potentiell einige der Objekte inspizieren), gibt es ein Argument namens testdir
, aber nirgends in dieser Datei wird darauf verwiesen, was testdir
ist oder wie ich möglicherweise eines erstellen könnte.Wie erstellt man eine Instanz von _pytest.pytester.Testdir
Nach einigen Graben scheint es, dass dies eine magische Vorrichtung ist, die automatisch konstruiert und an Ihre Funktion als Parameter gesendet wird, wenn Sie pytest mit dem pytester
Plugin ausführen. Als ich diese Klasse aufspürte, wird sie wieder über eine magische request
Param erstellt, wo der Code massiv nicht hilfreich ist, dir zu sagen, was diese magische request
ist oder wie man eine macht.
Um dieses zu konkretisieren ich einfach einen Test wie dieser nehmen will:
def test_reportinfo(self, testdir):
'''
Test case to make sure that DoctestItem.reportinfo() returns lineno.
'''
p = testdir.makepyfile(test_reportinfo="""
def foo(x):
'''
>>> foo('a')
'b'
'''
return 'c'
""")
items, reprec = testdir.inline_genitems(p, '--doctest-modules')
reportinfo = items[0].reportinfo()
assert reportinfo[1] == 1
und seine Logik läuft in IPython. Betrachtet man, was das Objekt testdir
tut, scheint es ziemlich cool. Es erstellt automatisch eine Datei für Sie und führt pytest problematisch anstatt über die Befehlszeile aus. Wie kann ich eins davon machen? Gibt es Unterlagen, die ich übersehen habe und die klar machen, dass sie weniger verdeckt sind?
Wenn ich etwas so verwenden möchte ist meine Tests gibt es eine Möglichkeit, wie ich den magischen testdir
Parameter etwas expliziter machen könnte, so dass der nächste Coder, der es ansieht, sein Haar nicht wie ich herauszieht bin ich?