Wenn ich pytest --collect-only
laufen lasse, um die Liste meiner Tests zu erhalten, bekomme ich sie in einem Format wie <Function: test_whatever>
. Wenn ich jedoch pytest -k ...
verwende, um einen bestimmten Test auszuführen, muss ich die "Adresse" des Tests im Format foo::test_whatever
eingeben. Ist es möglich, eine Liste aller Adressen aller Tests im selben Format zu erhalten, das -k
benötigt?Pytest: Adressen von allen Tests erhalten
Antwort
In conftest.py, können Sie die ‚Sammlung‘ Haken außer Kraft setzen Informationen über gesammelt test ‚Artikel‘ drucken
Sie einführen können. Ihre eigene Befehlszeilenoption (wie --collect-only) Wenn diese Option angegeben wird, die Prüflingen drucken (in welcher Weise Sie mögen) und Ausfahrt
Probe conftest.py unten (getestet lokal):..
import pytest
def pytest_addoption(parser):
parser.addoption("--my_test_dump", action="store", default=None,
help="Print test items in my custom format")
def pytest_collection_finish(session):
if session.config.option.my_test_dump is not None:
for item in session.items:
print('{}::{}'.format(item.fspath, item.name))
pytest.exit('Done!')
Weitere Informationen zu pytest Haken finden Sie unter:
http://doc.pytest.org/en/latest/_modules/_pytest/hookspec.html
Wie vergleicht 'pytest_collection_finish' mit 'pytest_collectreport'? Letzteres ist unter [offizielle Plugin-Dokumentation] (http://doc.pytest.org/en/latest/writing_plugins.html) aufgeführt, während das erste nicht ist. Sollten wir das eine oder das andere bevorzugen, oder funktionieren die Funktionen grundlegend anders? – ravron
Die Verwendung ist nicht so, wie Sie es angeben. Aus der Dokumentation: http://doc.pytest.org/en/latest/usage.html
pytest -k stringexpr # only run tests with names that match the
# "string expression", e.g. "MyClass and not method"
# will select TestMyClass.test_something
# but not TestMyClass.test_method_simple
so, was Sie ‚-k‘ passieren müssen, ist eine Zeichenfolge in allen aufrufbaren Funktionen enthalten Sie überprüfen möchten (Sie logischen Operator zwischen diesen Strings verwenden können). Für Ihr Beispiel (alle defs vorausgesetzt werden von einem foo::
Präfix:
pytest -k "foo::"
- 1. Pytest - keine Tests ausgeführt
- 2. Pytest und Ertrag basierte Tests
- 3. IP-Adressen von bekannten MAC-Adressen von der Serverseite erhalten
- 4. Running Docker automatisierte Repository-Tests mit Pytest
- 5. Transforming deklarative Tests in pytest behauptet
- 6. virtualenv findet kein installiertes Modul beim Ausführen von Tests [Pytest]
- 7. Erhalten Sie nur IP-Adressen von ARP
- 8. Erhalten Sie IPv4-Adressen von Dns.GetHostEntry()
- 9. Befehl vor allen Tests ausführen
- 10. Bereinigung nach allen Junit-Tests
- 11. Wie kann ich Suite/Aggregat-Tests mit Pytest erstellen
- 12. Unterstützt pytest "Standard" -Markierungen?
- 13. Python Pytest - Empfangen von Testparametern von außerhalb
- 14. Bericht mehrere Tests aus einer einzigen Funktion mit pytest
- 15. bash ignorieren spezifischen Fehlercode (pytest keine Tests Warnung Fehlercode 5)
- 16. Verbessern des Pytest-Endberichts, um einzelne bestandene Tests anzuzeigen?
- 17. Kann pytest xdist Tests in derselben Konfiguration protokollieren?
- 18. Pytest - mehrere Tests aus einer einzigen Datei ausführen
- 19. Wie werden alle PyTest-Tests ausgeführt, selbst wenn einige fehlschlagen?
- 20. Müssen Appium Python-Tests in AWS Device Farm pytest durchlaufen?
- 21. Pytest: Führen Sie eine Funktion am Ende der Tests
- 22. pytest braucht eine lange Zeit, um Tests zu sammeln
- 23. Jest Async-Funktion ONCE vor allen Tests
- 24. Etwas vor oder nach allen Scalatest-Tests
- 25. Pytest mit Mock/Pytest-Mock
- 26. Listusers Mit allen Benutzern zu erhalten, oder haben ihre E-Mail-Adressen nicht überprüft - AWS Cognito
- 27. Concurrent Pytest und Namespace
- 28. PyTest-Rekursionsprüfung deaktivieren?
- 29. Druck Adressen von Variablen
- 30. Socketio 1.0 erhalten Attribute von allen Clients
Warum möglicherweise machen Sie das brauchen? Um alle Tests auszuführen, die '--collect-only' Sie erhalten würde, ist es ausreichend,' pytest' ohne Parameter auszuführen. Und wenn sich der Satz von Tests geändert hat, ist Ihre Liste abgestanden, egal welches Format sie hat. –