Listen "147: Testing Single File Python Applications/Scripts with pytest and coverage"
Episode Synopsis
Have you ever written a single file Python application or script? 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.pydef 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
More episodes of the podcast Test & Code
238: So Long, and Thanks for All the Fish
15/08/2025
237: FastAPI Cloud - Sebastián Ramírez
11/08/2025
236: Git Tips for Testing - Adam Johnson
30/07/2025
235: pytest-django - Adam Johnson
22/07/2025
ZARZA We are Zarza, the prestigious firm behind major projects in information technology.