From b02f1c8ae74d8c5273e3d651539e931af64c34fa Mon Sep 17 00:00:00 2001 From: Hong Xu Date: Fri, 1 Jan 2021 12:21:39 -0800 Subject: [PATCH] DOC: Update multiple references to testdir to pytester In https://docs.pytest.org/en/stable/reference.html#testdir, it is suggested: > New code should avoid using testdir in favor of pytester. Multiple spots in the documents still use testdir and they can be quite confusing (especially the plugin writing guide). --- CONTRIBUTING.rst | 14 +++++++------- doc/en/writing_plugins.rst | 18 +++++++++--------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 2669cb195..054f809a8 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -324,20 +324,20 @@ Here is a simple overview, with pytest-specific bits: Writing Tests ~~~~~~~~~~~~~ -Writing tests for plugins or for pytest itself is often done using the `testdir fixture `_, as a "black-box" test. +Writing tests for plugins or for pytest itself is often done using the `pytester 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_true_assertion(pytester): + pytester.makepyfile( """ def test_foo(): assert True """ ) - result = testdir.runpytest() + result = pytester.runpytest() result.assert_outcomes(failed=0, passed=1) @@ -346,14 +346,14 @@ Alternatively, it is possible to make checks based on the actual output of the t .. code-block:: python - def test_true_assertion(testdir): - testdir.makepyfile( + def test_true_assertion(pytester): + pytester.makepyfile( """ def test_foo(): assert False """ ) - result = testdir.runpytest() + result = pytester.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 diff --git a/doc/en/writing_plugins.rst b/doc/en/writing_plugins.rst index f53f561cf..e9806a666 100644 --- a/doc/en/writing_plugins.rst +++ b/doc/en/writing_plugins.rst @@ -337,7 +337,7 @@ testing directory: Alternatively you can invoke pytest with the ``-p pytester`` command line option. -This will allow you to use the :py:class:`testdir <_pytest.pytester.Testdir>` +This will allow you to use the :py:class:`pytester <_pytest.pytester.Pytester>` fixture for testing your plugin code. Let's demonstrate what you can do with the plugin with an example. Imagine we @@ -374,17 +374,17 @@ string value of ``Hello World!`` if we do not supply a value or ``Hello return _hello -Now the ``testdir`` fixture provides a convenient API for creating temporary +Now the ``pytester`` fixture provides a convenient API for creating temporary ``conftest.py`` files and test files. It also allows us to run the tests and return a result object, with which we can assert the tests' outcomes. .. code-block:: python - def test_hello(testdir): + def test_hello(pytester): """Make sure that our plugin works.""" # create a temporary conftest.py file - testdir.makeconftest( + pytester.makeconftest( """ import pytest @@ -399,7 +399,7 @@ return a result object, with which we can assert the tests' outcomes. ) # create a temporary pytest test file - testdir.makepyfile( + pytester.makepyfile( """ def test_hello_default(hello): assert hello() == "Hello World!" @@ -410,7 +410,7 @@ return a result object, with which we can assert the tests' outcomes. ) # run all tests with pytest - result = testdir.runpytest() + result = pytester.runpytest() # check that all 4 tests passed result.assert_outcomes(passed=4) @@ -430,9 +430,9 @@ Additionally it is possible to copy examples for an example folder before runnin # content of test_example.py - def test_plugin(testdir): - testdir.copy_example("test_example.py") - testdir.runpytest("-k", "test_example") + def test_plugin(pytester): + pytester.copy_example("test_example.py") + pytester.runpytest("-k", "test_example") def test_example():