How to run coverage.py on a directory?

pythad picture pythad · Jun 28, 2017 · Viewed 10.5k times · Source

I have a directory tests that includes a lot of different tests named test_*.

I tried to run coverage run tests but it doesn't work.

How can I run a single command to coverage multiple files in the directory?

Answer

Nirmal picture Nirmal · Apr 6, 2019

Here is a complete example with commands from the same PWD for all phases in one place. With a worked up example, I am also including the testing and the report part for before and after coverage is run. I ran the following steps and it worked all fine on osx/mojave.

  1. Discover and run all tests in the test directory

$ python -m unittest discover <directory_name>

Or Discover and run all tests in "directory" with tests having file name pattern *_test.py

$ python -m unittest discover -s <directory> -p '*_test.py'

  1. run coverage for all modules

$ coverage run --source=./test -m unittest discover -s <directory>/

  1. get the coverage report from the same directory - no need to cd.

$ coverage report -m

Notice in above examples that the test directory doesn't have to be named "test" and same goes for the test modules.