I have identified some long running pytest tests with
py.test --durations=10
I would like to instrument one of those tests now with something
Run pytest like this:
python3 -m cProfile -o profile -m pytest
You can even pass in optional arguments:
python3 -m cProfile -o profile -m pytest tests/worker/test_tasks.py -s campaigns
This will create a binary file called profile
in your current directory. This can be analyzed with pstats:
import pstats
p = pstats.Stats('profile')
p.strip_dirs()
p.sort_stats('cumtime')
p.print_stats(50)
This will print the 50 lines with the longest cumulative duration.