pytest
Unit Testing with the pytest module
Checking whether pytest is installed
To see whether pytest is installed, try this command:
python3 -m pytest
If pytest is installed, the output will look something like this:
-bash-4.3$ python3 -m pytest
===================================== test session starts ======================================
platform linux -- Python 3.4.3, pytest-3.2.1, py-1.4.34, pluggy-0.4.0
rootdir: /cs/faculty/pconrad/cs8/lab02, inifile:
collected 0 items
================================= no tests ran in 0.03 seconds =================================
-bash-4.3$
On a Mac, it looks like this:
Phills-MacBook-Pro:lab02 pconrad$ python3 -m pytest
====================================== test session starts ======================================
platform darwin -- Python 3.6.2, pytest-3.2.1, py-1.4.34, pluggy-0.4.0
rootdir: /Users/pconrad/cs8/lab02, inifile:
collected 0 items
================================= no tests ran in 0.00 seconds ==================================
Phills-MacBook-Pro:lab02 pconrad$
Installing PyTest on your own system (or for your personal use on CSIL):
If you are working on CSIL, PyTest is likely already installed for you (check using the command shown above).
If not, use this command to install it for your own use:
pip3 install --user pytest
Then try the commands listed above.
Running tests from a single file
To run tests from foo.py, use:
python3 -m pytest foo.py
To run only a particular test called test_bar3
, use:
python3 -m pytest foo.py -k test_bar3
The -k
does pattern matching, so it can also be a substring of a set of tests you want to run. With suitable naming conventions,
you can have fine control over subsets of the test suite from the command line.
Minimizing output
If you want the output from a set of tests to be compact, and the same each time you run them
(e.g. for use with autograder system such as submit.cs) use the -qq
flag:
python3 -m pytest -qq foo.py -k test_bar3