147: Testing Single File Python Applications/Scripts with pytest and coverage
Have you ever written a single file Python application or script?
Have you written tests for it?
Do you check code coverage?
Have you written tests for it?
Do you check code coverage?
This is the topic of this weeks episode, spurred on by a listener question.
The questions:
- For single file scripts, I'd like to have the test code included right there in the file. Can I do that with pytest?
- If I can, can I use code coverage on it?
The example code discussed in the episode: script.py
def foo(): return 5 def main(): x = foo() print(x) if __name__ == '__main__': # pragma: no cover main() ## test code # To test: # pip install pytest # pytest script.py # To test with coverage: # put this file (script.py) in a directory by itself, say foo # then from the parent directory of foo: # pip install pytest-cov # pytest --cov=foo foo/script.py # To show missing lines # pytest --cov=foo --cov-report=term-missing foo/script.py def test_foo(): assert foo() == 5 def test_main(capsys): main() captured = capsys.readouterr() assert captured.out == "5\n"
Suggestion by @cfbolz if you need to import pytest:
if __name__ == '__main__': # pragma: no cover main() else: import pytest
Keep in touch
- Sign up for the PythonTest Newsletter
- Join the PythonTest Community
- Or pick up a pytest course or pytest book
Creators and Guests
