Pytest: Abwählen von tests
Mit pytest, markieren tests mit einem decorator
@pytest.mark.slow
def some_slow_test():
pass
Dann, von der Kommandozeile, kann man sagen, pytest zum überspringen der tests der Aufschrift "slow"
pytest -k-slow
Wenn ich einen zusätzlichen tag:
@pytest.mark.long
def some_long_test()
pass
Ich würde gerne in der Lage sein zu überspringen, lange UND langsame tests. Ich hab das versucht:
pytest -k-slow -k-long
und so:
pytest -k-slow,long
Und weder scheint zu funktionieren.
In der Befehlszeile, wie sage ich pytest zu überspringen beide die langsame UND lange tests?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zusätzlich mit der letzten Zugabe von "-m" command-line-option, die Sie sollten in der Lage sein, zu schreiben:
IOW, die "-m" option akzeptiert einen Ausdruck, die Sie vornehmen können verwenden von Markern, die als Boolesche Werte (falls eine Markierung existiert nicht auf eine test-Funktion der Wert False ist, wenn es existiert, es ist Wahr).
Suche durch die
pytest
code (mark.py
) und weitere Experimente zeigt Folgendes scheint zu funktionieren:(Mit der
--collect-only
option beschleunigt Experimentieren)pytest -k "-slow -long"
und zurückpy.test: error: argument -k: expected one argument
Es ist auch möglich, einen Stapel daneben Dekorateure.
Dann rief ich
py.test -m "slow and main"
und nur die tests mit beiden Maler wurden genannt.py.test -m "not (slow and main)"
führte in den anderen tests laufen