pytest icon indicating copy to clipboard operation
pytest copied to clipboard

--durations is tricked by freezegun

Open trimailov opened this issue 2 years ago • 3 comments

--durations is tricked by freezegun, when freezegun is used in autouse fixture.

Example:

from freezegun import freeze_time

@pytest.yield_fixture(autouse=True)
def frozen_time():
    with freeze_time("2020-01-01T12:00:00Z"):
        yield
        
def test_my_django_view(admin_client):
    resp = admin_client.get(...)
    assert resp.status_code == 200

...

Command:

pytest --reuse-db -s -vv --durations=5

Result:

============================================= slowest 5 durations =============================================

1609479015.03s setup    test_my_django_view1
1609479014.85s setup    test_my_django_view2
1609479014.70s setup    test_my_django_view3
1609479014.60s setup    test_my_django_view4
1609479014.47s setup    test_my_django_view5

Versions (Python 3.10.2):

pytest                             7.1.2
pytest-django                      4.2.0
freezegun                          1.2.2

freezegun is latest version which has some work done regarding this: https://github.com/spulec/freezegun/pull/460

If every test function is decorated individually - then everything works as expected:

from freezegun import freeze_time

@freeze_time("2020-01-01T12:00:00Z")
def test_my_django_view(admin_client):
    resp = admin_client.get(...)
    assert resp.status_code == 200
    
...

Report:

3.75s setup    test_my_django_view1
0.49s call     test_my_django_view2
0.28s call     test_my_django_view3
0.27s call     test_my_django_view4
0.25s call     test_my_django_view5

Related issue: https://github.com/pytest-dev/pytest/issues/7764

Like in the linked issue - if you say that it's my problem of (mis)using freezegun (or that I need to speak with freezegun devs) - it's fine

trimailov avatar Aug 25 '22 10:08 trimailov

I recall pytest importing the time helpers to avoid patches, it seems freeze gun needs more isolation from pytest

This needs coordination with the freezegun devs

RonnyPfannschmidt avatar Aug 25 '22 10:08 RonnyPfannschmidt

Thanks for swift reply!

This needs coordination with the freezegun devs

should I create mirrored issue in freezegun repo?

trimailov avatar Aug 25 '22 11:08 trimailov

Yes please

RonnyPfannschmidt avatar Aug 25 '22 11:08 RonnyPfannschmidt