I wanted to unit test some Python code that uses
A better solution is to capture the exception rather than using
sys.exit(exit_code)
to verify whether the exit_code
was as expected. The first answer I came across suggests using the built in capsys
fixture which is enabled with setting --capture=sys
when running pytest
. However for me this clashed with my tox.ini
:[testenv]
commands =
pytest -vv {posargs}
I take advantage of the {posargs}
feature by sometimes running tox
with arguments for pytest
, for example tox -e py27 -- --capture=no
in order to stop pytest
from capturing stdout
. Using the --capture=sys
method in my tox.ini
as mentioned above did not seem to play well with optionally using --capture=no
when invoking pytest
through tox
.A better solution is to capture the exception rather than using
capsys
. This avoids the need to use the --capture=sys
option at all:def test_exit():
with pytest.raises(SystemExit) as exc:
# test goes here
assert exc.value.code == 0
from : https://sam.hooke.me/note/2018/02/captured-systemexit-with-pytest-and-tox/
No comments:
Post a Comment