diff --git a/AUTHORS b/AUTHORS index 2be74441a..463810bd9 100644 --- a/AUTHORS +++ b/AUTHORS @@ -209,6 +209,7 @@ Thomas Hisch Tim Strazny Tom Dalton Tom Viner +Tomer Keren Trevor Bekolay Tyler Goodlet Tzu-ping Chung diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index c005c2fb2..d3202f7c8 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -280,6 +280,47 @@ Here is a simple overview, with pytest-specific bits: base: features # if it's a feature +Writing Tests +---------------------------- + +Writing tests for plugins or for pytest itself is often done using the `testdir fixture `_, as a "black-box" test. + +For example, to ensure a simple test passes you can write: + +.. code-block:: python + + def test_true_assertion(testdir): + testdir.makepyfile( + """ + def test_foo(): + assert True + """ + ) + result = testdir.runpytest() + 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( + """ + def test_foo(): + assert False + """ + ) + result = testdir.runpytest() + 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 ---------------------------- diff --git a/changelog/4151.doc.rst b/changelog/4151.doc.rst new file mode 100644 index 000000000..da561002a --- /dev/null +++ b/changelog/4151.doc.rst @@ -0,0 +1 @@ +Add tempir testing example to CONTRIBUTING.rst guide