OverviewTeaching: 5 min
Exercises: 5 minQuestions
What happens with assertions in python?Objectives
Understand how assertions in python correspond to exit codes
Figure out how pytest fits in
This is a relatively short section, but we need to connect some things you’ve learned from testing in python with exit codes.
Assert Your Tests
An assertion is a sanity-check carried out by the
assert statement, useful when debugging code.
Let’s create a file called
python_assert.py with the following content:
x = "hello" assert x == "hello" assert x == "goodbye"
and then run it with
What happens when an assertion fails in python?
Traceback (most recent call last): File "./python_assert.py", line 5, in <module> assert x == "goodbye" AssertionError
An exception is raised,
AssertionError. The nice thing about python is that all unhandled exceptions return a non-zero exit code. If an exit code is not set, this defaults to
> echo $? 1
Ignoring what would cause the assertion to be
False, we can see that assertions automatically indicate failure in a script.
What about pytest?
Pytest, thankfully, handles these assertion failures intuitively. To try this out quickly, go ahead and modify
python_assert.py as follows:
x = "hello" def test_assert_success(): assert x == "hello" def test_assert_failure(): assert x == "goodbye"
pytest python_assert.py will produce an expected exit code depending on whether the test passed or failed.
You should be able to confirm that the exit codes are useful here.
You can do whatever you like in a test, as long as you return the right exit code
Pytest, and other test utilities, will propagate the exit codes correctly