Python Test

147: Testing Single File Python Applications/Scripts with pytest and coverage

03.06.2021 - By Brian OkkenPlay

Download our free app to listen on your phone

Download on the App StoreGet it on Google Play

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.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

Full Transcript Sponsored By:PyCharm Professional: Try PyCharm Pro for 4 months and learn how PyCharm will save you time. Promo Code: TESTANDCODE22

More episodes from Python Test