Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[junit] failed test is missing properties if there is error also in teardown #11367

Closed
fruch opened this issue Aug 29, 2023 · 0 comments · Fixed by #11369
Closed

[junit] failed test is missing properties if there is error also in teardown #11367

fruch opened this issue Aug 29, 2023 · 0 comments · Fixed by #11369

Comments

@fruch
Copy link
Contributor

fruch commented Aug 29, 2023

when test fails and it's teardown is failing the data add with record_property isn't attached to the test failure, but only to the teardown failure

example such run with pytest --junit-xml=junit.xml:

import pytest

@pytest.fixture(scope="function", autouse=True)
def fixture_add_props(record_property):
    record_property('split_name', "something_coming_form_env")

class TestSomthing:
    def test_pass(self):
        pass

    def test_fail(self):
        raise Exception("failed")

    def test_pass_teardown_fail(self, request: pytest.FixtureRequest):
        def fin():
            raise Exception("failed teardown")
        request.addfinalizer(fin)
        
    def test_fail_test_and_teardown(self, request: pytest.FixtureRequest):
        def fin():
            raise Exception("failed teardown")
        request.addfinalizer(fin)

        raise Exception("failed")

I would expect both testcases to have properties that was attached to the test

fruch added a commit to fruch/pytest that referenced this issue Aug 30, 2023
seem like not all the cases of calling `finalize` were adding
the properties into the test case element, which leads to some
test cases missing the expected properties.

Fixes: pytest-dev#11367
fruch added a commit to fruch/pytest that referenced this issue Aug 30, 2023
seem like not all the cases of calling `finalize` were adding
the properties into the test case element, which leads to some
test cases missing the expected properties.

Fixes: pytest-dev#11367
fruch added a commit to fruch/pytest that referenced this issue Aug 30, 2023
seem like not all the cases of calling `finalize` were adding
the properties into the test case element, which leads to some
test cases missing the expected properties.

Fixes: pytest-dev#11367
nicoddemus pushed a commit to fruch/pytest that referenced this issue Sep 3, 2023
seem like not all the cases of calling `finalize` were adding
the properties into the test case element, which leads to some
test cases missing the expected properties.

Fixes: pytest-dev#11367
nicoddemus pushed a commit that referenced this issue Sep 3, 2023
Move handling of user_properties to `finalize()`.

Previously if a fixture failed during teardown, `pytest_runtest_logreport` would not be called with "teardown", resulting in the user properties not being saved on the JUnit XML file.

Fixes: #11367
nicoddemus pushed a commit to nicoddemus/pytest that referenced this issue Sep 3, 2023
Move handling of user_properties to `finalize()`.

Previously if a fixture failed during teardown, `pytest_runtest_logreport` would not be called with "teardown", resulting in the user properties not being saved on the JUnit XML file.

Fixes: pytest-dev#11367
(cherry picked from commit 917ce9a)
nicoddemus added a commit that referenced this issue Sep 3, 2023
#11382)

Move handling of user_properties to `finalize()`.

Previously if a fixture failed during teardown, `pytest_runtest_logreport` would not be called with "teardown", resulting in the user properties not being saved on the JUnit XML file.

Fixes: #11367
(cherry picked from commit 917ce9a)

Co-authored-by: Israel Fruchter <israel.fruchter@gmail.com>
jsuchenia pushed a commit to jsuchenia/adventofcode that referenced this issue Dec 2, 2023
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [pytest](https://docs.pytest.org/en/latest/) ([source](https://github.com/pytest-dev/pytest), [changelog](https://docs.pytest.org/en/stable/changelog.html)) | patch | `==7.4.0` -> `==7.4.2` |

---

### Release Notes

<details>
<summary>pytest-dev/pytest (pytest)</summary>

### [`v7.4.2`](https://github.com/pytest-dev/pytest/releases/tag/7.4.2): pytest 7.4.2 (2023-09-07)

[Compare Source](pytest-dev/pytest@7.4.1...7.4.2)

### Bug Fixes

-   [#&#8203;11237](pytest-dev/pytest#11237): Fix doctest collection of `functools.cached_property` objects.

-   [#&#8203;11306](pytest-dev/pytest#11306): Fixed bug using `--importmode=importlib` which would cause package `__init__.py` files to be imported more than once in some cases.

-   [#&#8203;11367](pytest-dev/pytest#11367): Fixed bug where `user_properties` where not being saved in the JUnit XML file if a fixture failed during teardown.

-   [#&#8203;11394](pytest-dev/pytest#11394): Fixed crash when parsing long command line arguments that might be interpreted as files.

### Improved Documentation

-   [#&#8203;11391](pytest-dev/pytest#11391): Improved disclaimer on pytest plugin reference page to better indicate this is an automated, non-curated listing.

### [`v7.4.1`](https://github.com/pytest-dev/pytest/releases/tag/7.4.1): pytest 7.4.1 (2023-09-02)

[Compare Source](pytest-dev/pytest@7.4.0...7.4.1)

## Bug Fixes

-   [#&#8203;10337](pytest-dev/pytest#10337): Fixed bug where fake intermediate modules generated by `--import-mode=importlib` would not include the
    child modules as attributes of the parent modules.

-   [#&#8203;10702](pytest-dev/pytest#10702): Fixed error assertion handling in `pytest.approx` when `None` is an expected or received value when comparing dictionaries.

-   [#&#8203;10811](pytest-dev/pytest#10811): Fixed issue when using `--import-mode=importlib` together with `--doctest-modules` that caused modules
    to be imported more than once, causing problems with modules that have import side effects.

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi44LjExIiwidXBkYXRlZEluVmVyIjoiMzYuMTA3LjIiLCJ0YXJnZXRCcmFuY2giOiJtYXN0ZXIifQ==-->

Reviewed-on: https://git.apud.pl/jacek/adventofcode/pulls/32
Co-authored-by: Renovate <renovate@apud.pl>
Co-committed-by: Renovate <renovate@apud.pl>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant