If you want to run a profiler over your pytest cases (including underlying code), the easiest way is to run pytest directly using cPython:
python -m cProfile -o profile $(which py.test)
You can even pass in optional arguments:
python -m cProfile -o profile $(which py.test) \ tests/worker/test_tasks.py -s campaigns
This will create a binary file called profile in your current directory. The file can then be analyzed with pstats:
import pstats
p = pstats.Stats('profile')
p.strip_dirs()
p.sort_stats('tottime')
p.print_stats(50)
This will print the 50 lines with the longest total duration. You can also sort by other columns, e.g. 'cumtime'.