From bad7a0207fdd776307f29bc0563fcdc81bd57459 Mon Sep 17 00:00:00 2001 From: symonk Date: Sun, 24 May 2020 11:34:54 +0100 Subject: [PATCH] document new class instance per test --- doc/en/getting-started.rst | 49 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/doc/en/getting-started.rst b/doc/en/getting-started.rst index 56057434e..55238ffa3 100644 --- a/doc/en/getting-started.rst +++ b/doc/en/getting-started.rst @@ -153,6 +153,55 @@ Once you develop multiple tests, you may want to group them into a class. pytest The first test passed and the second failed. You can easily see the intermediate values in the assertion to help you understand the reason for the failure. +Some reasons why grouping tests in a class can be useful is: + + * Structural or organizational reasons + * Sharing fixtures for tests only in that particular class + * Applying marks at the class level and having them implicitly apply to all tests + +Something to be aware of when grouping tests inside classes is that each test does not have the same instance of the class. +Having each test share the same class instance would be very detrimental to test isolation and would promote poor test practices. +This is outlined below: + +.. code-block:: python + + class TestClassDemoInstance: + def test_one(self): + assert 0 + + def test_two(self): + assert 0 + + +.. code-block:: pytest + + $ pytest -k TestClassDemoInstance -q + + FF [100%] + ============================================================================================================== FAILURES =============================================================================================================== + ___________________________________________________________________________________________________ TestClassDemoInstance.test_one ____________________________________________________________________________________________________ + + self = , request = > + + def test_one(self, request): + > assert 0 + E assert 0 + + testing\test_example.py:4: AssertionError + ___________________________________________________________________________________________________ TestClassDemoInstance.test_two ____________________________________________________________________________________________________ + + self = , request = > + + def test_two(self, request): + > assert 0 + E assert 0 + + testing\test_example.py:7: AssertionError + ======================================================================================================= short test summary info ======================================================================================================= + FAILED testing/test_example.py::TestClassDemoInstance::test_one - assert 0 + FAILED testing/test_example.py::TestClassDemoInstance::test_two - assert 0 + 2 failed in 0.17s + Request a unique temporary directory for functional tests --------------------------------------------------------------