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

httpretty silently fails with Python 3.12 #474

Open
kfrydel opened this issue Oct 23, 2023 · 1 comment
Open

httpretty silently fails with Python 3.12 #474

kfrydel opened this issue Oct 23, 2023 · 1 comment

Comments

@kfrydel
Copy link

kfrydel commented Oct 23, 2023

We are switching our project to Python 3.12. We use pytest and httpretty in order to mock some requests. From Python 3.12 datetime.utcnow is deprecated: https://docs.python.org/3/library/datetime.html#datetime.datetime.utcnow
When running tests using pytest, warnings raise an exception and since datetime.utcnow is used by httpretty in a thread: https://github.com/gabrielfalcao/HTTPretty/blob/main/httpretty/core.py#L1077 the warning is not visible anywhere. httpretty does not fill the file with HTTP content and tests fail with something like this: ConnectionError: Error requesting 'http://localhost:9000/path': ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response')). It fails because http client gets an empty string from the file when trying to read the first line of HTTP response: https://github.com/python/cpython/blob/3.12/Lib/http/client.py#L285

It can be workarounded by adding an ignore to pytest.ini file.

@jobarjo
Copy link

jobarjo commented Oct 7, 2024

@kfrydel - many thanks for this! Took me quite some time before finding this (did not appear on my G searches :D

yarikoptic added a commit to yarikoptic/HTTPretty that referenced this issue Nov 19, 2024
Potentially it might be addressing
- gabrielfalcao#474

In our case we got datalad tests failing since we trigger errors on all new
deprecation warnigns and this was the one this time

    .pybuild/cpython3_3.12_datalad/build/datalad/downloaders/tests/test_http.py: 13 warnings
      /usr/lib/python3/dist-packages/httpretty/core.py:1077: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
        now = datetime.utcnow()
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

No branches or pull requests

2 participants