We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode 147: Testing Single File Python Applications/Scripts with pytest and coverage

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

2021/3/6
logo of podcast Test & Code

Test & Code

Shownotes Transcript

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: