getsentry / getsentry/responses

PreparedRequest instances are modified by responses

Open
#738 4 comments 2 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
4.3k
Forks
378
Avg merge
4d 1h
Merged PRs (30d)
1

Description

### Describe the bug

As you can see in https://github.com/getsentry/responses/blob/b68e51388e08399a8828633910eac49d6fd35e2b/responses/__init__.py#L1067 responses, is modifying PreparedRequest instances to incorporate additional attributes.
This is fine in the context of responses, this is not however when this data is returned to the clients.

Could you modify responses so that the behavior from a client perspective is the one of requests (ie: no additional attributes in objects) ?

Thanks again

### Additional context

In the context of writing tests against HTTP behavior that cannot be reproduced with a real live scenario (such as an HTTP failure response from the server), I am trusting my test suite to be able to handle those scenarios and if I see that a PreparedRequest contains an attribute, I assume it will exists in production code as well the day such issue will occur (could be years after deployment time in such scenarios).

### Version of `responses`

0.25.3

### Steps to Reproduce

```python
import requests
import responses

def test_params_in_prepared_request():
responses.get("https://the_test.url", status=403)
response = requests.get("https://the_test.url?param=value")
try:
response.raise_for_status()
except requests.RequestException as e:
print(e.request.params) # Without responses, an AttributeError will be raise ('PreparedRequest' object has no attribute 'params')
```

### Expected Result

I expect the same failure as in production in my test run

### Actual Result

The AttributeError is not raised when accessing params on a PreparedRequest

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.