Drucken von Testausführungszeiten und Fixieren langsamer Tests mit py.test

Lesezeit: 2 Minuten

Ich führe Unit-Tests auf einem CI-Server mit py.test aus. Tests verwenden externe Ressourcen, die über das Netzwerk abgerufen werden. Manchmal dauert Test Runner zu lange, was dazu führt, dass Test Runner abgebrochen wird. Ich kann die Probleme nicht lokal wiederholen.

Gibt es eine Möglichkeit, py.test dazu zu bringen, Ausführungszeiten von (langsamen) Tests auszudrucken, damit problematische Tests einfacher festgelegt werden können?

Benutzeravatar von Bruno Oliveira
Bruno Oliveira

Ich bin mir nicht sicher, ob dies Ihr Problem lösen wird, aber Sie können bestehen --durations=N um am langsamsten zu drucken N Tests nach Abschluss der Testsuite.

Verwenden --durations=0 alles zu drucken.

  • Wissen Sie, ob es eine Möglichkeit gibt, es dem generierten HTML-Abdeckungsbericht hinzuzufügen? Ähnlich wie Hinzufügen .coveragerc Datei mit Inhalt [run] branch = True fügt Verzweigungsabdeckungsinformationen hinzu?

    – Martin Thoma

    30. August 2018 um 11:03 Uhr

  • Sie müssen diese Informationen selbst hinzufügen, pytest-html unterstützt das Einfügen zusätzlicher Inhalte.

    – Bruno Oliveira

    31. August 2018 um 12:07 Uhr

  • @oLas: Das stimmt nicht: Wenn Tests “zu schnell” sind, kann die gemessene Zeit anscheinend 0 werden und sie werden trotzdem herausgefiltert. Auch eine negative Schwelle hilft in diesem Fall nicht weiter. Ein weiteres Ärgernis bei diesem Ansatz ist, dass pytest immer druckt (0.00 durations hidden. Use -vv to show these durations.) was keinen Sinn macht.

    – bluenote10

    28. November 2018 um 16:57 Uhr


  • @ bluenote10 nicht sicher, ob dies später hinzugefügt wurde, da jetzt 2021 ist, aber mit --durations-min=N Sie können die Mindestdauer in Sekunden für die Aufnahme in die langsamste Liste festlegen. Der Standardwert ist 0,005, sodass selbst bei –durations=0 keine Werte unter 0,005 angezeigt werden, es sei denn, Sie legen einen Wert für fest durations-min

    – javrd

    18. Oktober 2021 um 15:36 Uhr

Sie können die Nummer mit übergeben --durations

pytest --durations=0 — Show all times for tests and setup and teardown

pytest --durations=1 — Just show me the slowest

pytest --durations=50 — Slowest 50, with times, … etc

Nehmen Sie Bezug auf: https://medium.com/@brianokken/pytest-durations-0-show-all-times-for-tests-and-setup-and-teardown-848dccac85db

Oder: https://docs.pytest.org/en/latest/usage.html#profiling-test-execution-duration

1439710cookie-checkDrucken von Testausführungszeiten und Fixieren langsamer Tests mit py.test

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy