diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index eb36122b5..c8ef03209 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -283,9 +283,9 @@ Here is a simple overview, with pytest-specific bits: Writing Tests ---------------------------- -Writing tests for plugins or for pytest itself is done using the `testdir fixture `_, +Writing tests for plugins or for pytest itself is often done using the `testdir fixture `_, as a "black-box" test. -For example: +For example, to ensure a simple test passes you can write: .. code-block:: python @@ -300,6 +300,11 @@ For example: result.assert_outcomes(failed=0, passed=1) +Alternatively, it is possible to make checks based on the actual output of the termal using +*glob-like* expressions: + +.. code-block:: python + def test_true_assertion(testdir): testdir.makepyfile( """ @@ -308,7 +313,12 @@ For example: """ ) result = testdir.runpytest() - result.assert_outcomes(failed=1, passed=0) + result.stdout.fnmatch_lines(["*assert False*, "*1 failed*"]) + +When choosing a file where to write a new test, take a look at the existing files and see if there's +one file which looks like a good fit. For example, a regression test about a bug in the ``--lf`` option +should go into ``test_cacheprovider.py``, given that this option is implemented in ``cacheprovider.py``. +If in doubt, go ahead and open a PR with your best guess and we can discuss this over the code. Joining the Development Team