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

--durations is tricked by freezegun #10245

Open
trimailov opened this issue Aug 25, 2022 · 3 comments
Open

--durations is tricked by freezegun #10245

trimailov opened this issue Aug 25, 2022 · 3 comments
Labels
type: enhancement new feature or API change, should be merged into features branch

Comments

@trimailov
Copy link

trimailov commented Aug 25, 2022

--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: spulec/freezegun#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: #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

@RonnyPfannschmidt
Copy link
Member

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

@trimailov
Copy link
Author

trimailov commented Aug 25, 2022

Thanks for swift reply!

This needs coordination with the freezegun devs

should I create mirrored issue in freezegun repo?

@RonnyPfannschmidt
Copy link
Member

Yes please

@Zac-HD Zac-HD added the type: enhancement new feature or API change, should be merged into features branch label Sep 10, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: enhancement new feature or API change, should be merged into features branch
Projects
None yet
Development

No branches or pull requests

3 participants