def test_fixture_finalizers(executed_docstring_source):
    """
    >>> import pytest

    In pytest, you can define several finalizers for one fixture, like this:
    >>> @pytest.fixture
    ... def fixture_with_finalizers(request):
    ...     def first_finalizer():
    ...         pass
    ...     request.addfinalizer(first_finalizer)
    ...
    ...     def second_finalizer():
    ...         pass
    ...     request.addfinalizer(second_finalizer)

    Of course, allure will report all of them
    >>> def test_fixture_with_finalizers_example(fixture_with_finalizers):
    ...     pass
    """

    assert_that(executed_docstring_source.allure_report,
                has_test_case("test_fixture_with_finalizers_example",
                              has_container(executed_docstring_source.allure_report,
                                            has_before("fixture_with_finalizers"),
                                            has_after("{fixture}::{finalizer}".format(fixture="fixture_with_finalizers",
                                                                                      finalizer="first_finalizer")
                                                      ),
                                            has_after("{fixture}::{finalizer}".format(fixture="fixture_with_finalizers",
                                                                                      finalizer="second_finalizer"),
                                                      )
                                            )
                              )
                )
def test_fixture_finalizers(executed_docstring_source):
    """
    >>> import pytest

    In pytest, you can define several finalizers for one fixture, like this:
    >>> @pytest.fixture
    ... def fixture_with_finalizers(request):
    ...     def first_finalizer():
    ...         pass
    ...     request.addfinalizer(first_finalizer)
    ...
    ...     def second_finalizer():
    ...         pass
    ...     request.addfinalizer(second_finalizer)

    Of course, allure will report all of them
    >>> def test_fixture_with_finalizers_example(fixture_with_finalizers):
    ...     pass
    """

    assert_that(
        executed_docstring_source.allure_report,
        has_test_case(
            "test_fixture_with_finalizers_example",
            has_container(
                executed_docstring_source.allure_report,
                has_before("fixture_with_finalizers"),
                has_after("{fixture}::{finalizer}".format(
                    fixture="fixture_with_finalizers",
                    finalizer="first_finalizer")),
                has_after(
                    "{fixture}::{finalizer}".format(
                        fixture="fixture_with_finalizers",
                        finalizer="second_finalizer"), ))))
Exemple #3
0
 def test_group_with_test_teardown(self):
     assert_that(
         self.allure_report,
         has_test_case(
             'Case With Test Teardown',
             has_container(
                 self.allure_report,
                 has_container(
                     self.allure_report,
                     all_of(has_before('Suite Setup Keyword'),
                            has_after('Suite Teardown Keyword'))),
                 has_after('Test Teardown Keyword'))),
     )
def test_fixture_override(allured_testdir):
    allured_testdir.testdir.makeconftest("""
        import pytest
        import allure

        @pytest.fixture
        def my_fixture():
            with allure.step('Step in before in original fixture'):
                pass
            yield
            with allure.step('Step in after in original fixture'):
                pass

    """)

    allured_testdir.testdir.makepyfile("""
        import pytest
        import allure

        @pytest.fixture
        def my_fixture(my_fixture):
            with allure.step('Step in before in redefined fixture'):
                pass
            yield
            with allure.step('Step in after in redefined fixture'):
                pass

        def test_with_redefined_fixture(my_fixture):
            pass
    """)

    allured_testdir.run_with_allure()

    assert_that(
        allured_testdir.allure_report,
        has_test_case(
            "test_with_redefined_fixture",
            has_container(
                allured_testdir.allure_report,
                has_before("my_fixture",
                           has_step("Step in before in original fixture")),
                has_after("my_fixture::0",
                          has_step("Step in after in original fixture"))),
            has_container(
                allured_testdir.allure_report,
                has_before("my_fixture",
                           has_step("Step in before in redefined fixture")),
                has_after("my_fixture::0",
                          has_step("Step in after in redefined fixture"))),
        ))
def test_skip_finalizer_fixture(executed_docstring_source):
    """
    >>> import pytest

    >>> @pytest.fixture
    ... def skip_finalizer_fixture(request):
    ...     def fixture_finalizer():
    ...         pytest.skip()
    ...     request.addfinalizer(fixture_finalizer)

    >>> def test_skip_finalizer_fixture_example(skip_finalizer_fixture):
    ...     pass
    """

    assert_that(executed_docstring_source.allure_report,
                has_test_case("test_skip_finalizer_fixture_example",
                              with_status("passed"),
                              has_container(executed_docstring_source.allure_report,
                                            has_after("{fixture}::{finalizer}".format(
                                                fixture="skip_finalizer_fixture",
                                                finalizer="fixture_finalizer"),
                                                with_status("skipped"),
                                                has_status_details(with_message_contains("Skipped: <Skipped instance>"),
                                                                   with_trace_contains("fixture_finalizer")
                                                                   ),
                                            ),
                                            )
                              )
                )
def test_fixture_finalizer(executed_docstring_source):
    """
    >>> import pytest

    Let"s define fixture with finalizer:
    >>> @pytest.fixture
    ... def fixture_with_finalizer(request):
    ...     def finalizer():
    ...         pass
    ...     request.addfinalizer(finalizer)

    For next test, allure will report fixture finalizer in TearDown section
    >>> def test_fixture_with_finalizer_example(fixture_with_finalizer):
    ...     pass
    """

    assert_that(executed_docstring_source.allure_report,
                has_test_case("test_fixture_with_finalizer_example",
                              has_container(executed_docstring_source.allure_report,
                                            has_before("fixture_with_finalizer"),
                                            has_after("{fixture}::{finalizer}".format(fixture="fixture_with_finalizer",
                                                                                      finalizer="finalizer")
                                                      )
                                            )
                              )
                )
Exemple #7
0
def test_pytest_failed_finalizer_fixture(executed_docstring_source):
    """
    >>> import pytest

    >>> @pytest.fixture
    ... def pytest_failed_finalizer_fixture(request):
    ...     def fixture_finalizer():
    ...         pytest.fail()
    ...     request.addfinalizer(fixture_finalizer)

    >>> def test_pytest_failed_finalizer_fixture_example(pytest_failed_finalizer_fixture):
    ...     pass
    """

    assert_that(executed_docstring_source.allure_report,
                has_test_case("test_pytest_failed_finalizer_fixture_example",
                              with_status("failed"),
                              has_status_details(with_message_contains("Failed"),
                                                 with_trace_contains("def fixture_finalizer():")
                                                 ),
                              has_container(executed_docstring_source.allure_report,
                                            has_after("{fixture}::{finalizer}".format(
                                                fixture="pytest_failed_finalizer_fixture",
                                                finalizer="fixture_finalizer"),
                                                with_status("failed"),
                                                has_status_details(with_message_contains("Failed"),
                                                                   with_trace_contains("fixture_finalizer")
                                                                   ),
                                            ),
                                            )
                              )
                )
def test_failed_finalizer_fixture(executed_docstring_source):
    """
    >>> import pytest

    >>> @pytest.fixture
    ... def failed_finalizer_fixture(request):
    ...     def fixture_finalizer():
    ...         assert False
    ...     request.addfinalizer(fixture_finalizer)
    ...
    ... def test_failed_finalizer_fixture_example(failed_finalizer_fixture):
    ...     pass
    """

    assert_that(executed_docstring_source.allure_report,
                has_test_case("test_failed_finalizer_fixture_example",
                              with_status("failed"),
                              has_status_details(with_message_contains("AssertionError"),
                                                 with_trace_contains("def fixture_finalizer():")
                                                 ),
                              has_container(executed_docstring_source.allure_report,
                                            has_after("{fixture}::{finalizer}".format(
                                                fixture="failed_finalizer_fixture",
                                                finalizer="fixture_finalizer"),
                                                with_status("failed"),
                                                has_status_details(with_message_contains("AssertionError"),
                                                                   with_trace_contains("fixture_finalizer")
                                                                   ),
                                            ),
                                            )
                              )
                )
def test_fixture_finalizer(executed_docstring_source):
    """
    >>> import pytest

    Let"s define fixture with finalizer:
    >>> @pytest.fixture
    ... def fixture_with_finalizer(request):
    ...     def finalizer():
    ...         pass
    ...     request.addfinalizer(finalizer)

    For next test, allure will report fixture finalizer in TearDown section
    >>> def test_fixture_with_finalizer_example(fixture_with_finalizer):
    ...     pass
    """

    assert_that(
        executed_docstring_source.allure_report,
        has_test_case(
            "test_fixture_with_finalizer_example",
            has_container(
                executed_docstring_source.allure_report,
                has_before("fixture_with_finalizer"),
                has_after("{fixture}::{finalizer}".format(
                    fixture="fixture_with_finalizer",
                    finalizer="finalizer")))))
Exemple #10
0
 def test_case_with_teardown(self):
     assert_that(
         self.allure_report,
         has_test_case(
             'Case With Test Teardown',
             has_container(self.allure_report,
                           has_after('Test Teardown Keyword'))),
     )
def test_fixture_finalizer_attachment(executed_docstring_path):
    assert_that(
        executed_docstring_path.allure_report,
        has_test_case(
            "test_fixture_finalizer_attachment",
            has_container(
                executed_docstring_path.allure_report,
                has_after("fixture_with_attachment_in_finalizer::finalizer",
                          has_attachment()))))
def test_fixture_finalizer_attachment(executed_docstring_path):
    assert_that(executed_docstring_path.allure_report,
                has_test_case("test_fixture_finalizer_attachment",
                              has_container(executed_docstring_path.allure_report,
                                            has_after("fixture_with_attachment_in_finalizer::finalizer",
                                                      has_attachment()
                                                      )
                                            )
                              )
                )
Exemple #13
0
 def test_case_with_fixtures(self):
     assert_that(
         self.allure_report,
         has_test_case(
             'Case With Test Fixtures',
             has_container(
                 self.allure_report,
                 all_of(has_before('Test Setup Keyword'),
                        has_after('Test Teardown Keyword')))),
     )