Using pytest with Lager ======================= Simple pytest example --------------------- .. code-block:: python :emphasize-lines: 17,18 :caption: pytest-simple.py :name: Simple pytest example import sys import pytest def meaning(): return 42 def test_equality(): assert meaning() == meaning() def test_false(): assert False is False def test_meaning(): assert meaning() == 43 if __name__ == '__main__': args = sys.argv if args[-1].startswith('::'): args = args[1:] args[-1] = __file__ + args[-1] sys.exit(pytest.main(args)) Save the above listing as ``pytest-simple.py`` .. code-block:: console ➜ lager python pytest-simple.py ============================= test session starts ============================== platform linux -- Python 3.8.5, pytest-6.0.2, py-1.9.0, pluggy-0.13.1 rootdir: /tmp collected 3 items tmp59ouy9ec.py ..F [100%] =================================== FAILURES =================================== _________________________________ test_meaning _________________________________ def test_meaning(): > assert meaning() == 43 E assert 42 == 43 E + where 42 = meaning() tmp59ouy9ec.py:14: AssertionError =========================== short test summary info ============================ FAILED tmp59ouy9ec.py::test_meaning - assert 42 == 43 ========================= 1 failed, 2 passed in 0.10s ========================== ``--`` can be used to demarcate arguments that should be passed through to pytest itself (as opposed to being ``lager python`` arguments). To run one specific test function, ``::`` can be used as a prefix to the function name: .. code-block:: console ➜ lager python pytest-simple.py -- ::test_equality ============================= test session starts ============================== platform linux -- Python 3.8.6, pytest-6.0.2, py-1.10.0, pluggy-0.13.1 rootdir: /tmp collected 1 item tmpmtiviawa.py . [100%] ============================== 1 passed in 0.06s ===============================