I am running unit tests on a CI server using py.test. Tests use external resources fetched over network. Sometimes test runner takes too long, causing test runner to be aborted. I cannot repeat the issues locally.
Is there a way to make py.test print out execution times of (slow) test, so pinning down problematic tests become easier?
I'm not sure this will solve your problem, but you can pass --durations=N
to print the slowest N
tests after the test suite finishes.
Use --durations=0
to print all.
You can pass the number with --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
Take refer in: https://medium.com/@brianokken/pytest-durations-0-show-all-times-for-tests-and-setup-and-teardown-848dccac85db
Or: https://docs.pytest.org/en/latest/usage.html#profiling-test-execution-duration
Success story sharing
.coveragerc
file with the contents[run] branch = True
adds branching coverage information?(0.00 durations hidden. Use -vv to show these durations.)
which does not make any sense.--durations-min=N
you can set the minimal duration in seconds for inclusion in slowest list. Default is 0.005 so even --durations=0 it will not show any under 0.005 unless you set a value fordurations-min