Skip to content

Added expected_data parameter to register_uri#97

Open
maraujop wants to merge 3 commits intogabrielfalcao:mainfrom
maraujop:expected_data
Open

Added expected_data parameter to register_uri#97
maraujop wants to merge 3 commits intogabrielfalcao:mainfrom
maraujop:expected_data

Conversation

@maraujop
Copy link
Copy Markdown

This checks that POST payload received matches the one expected. This is very helpful for improving robustness of some mocked tests, when creating or updating objects, it is very helpful to check data sent to the endpoint was correct, otherwise a bug could be in between and there is no easy way to catch it.

Currently you can access last request's body as you know, but doing it this way is more elegant and easy to follow, as everything is gathered together in the same mock registration.

Thanks, cheers,
Miguel

This checks that POST payload received matches the one expected. This is
very helpful for improving robustness of some mocked tests.
Comment thread tests/functional/test_requests.py Outdated
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You could have used:

requests.post.when.called_with("https://api.imaginary.com/v1/sweet/", {"wrong": "data"}).should.throw(ValueError)

http://falcao.it/sure/reference.html#callable-when-called_with-arg1--kwarg1-2--should-throw-exception-

@maraujop
Copy link
Copy Markdown
Author

I've moved indented code to a method named check_expected_data that raises the exception if it fails. However maybe you prefer a method like is_expected_data_valid that returns a Boolean and whether if that is False, throw the exception in the core flow.

I've also adjusted the test as you mentioned. Thanks for the feedback.

BTW I had to do a push force because Github five hundred yesterday while i was pushing and the repository end up inconsistent.

Cheers,
Miguel

@gabrielfalcao
Copy link
Copy Markdown
Owner

@maraujop I love it, thank you for your time. I'm pretty busy rightnow but as soon as I get some free time I will apply this.

Again, thank you so much!

…cted_data

Conflicts:
	httpretty/core.py
	tests/functional/test_requests.py
@maraujop
Copy link
Copy Markdown
Author

Hi Gabriel, I've rebased the patch against latest master branch, so that it works in Mac. Tests are not passing, but I believe the ones that are broken are also broken in master branch. Could you please consider merging this now to avoid rebasing against future refactors?

@chris-martin
Copy link
Copy Markdown
Contributor

I've done something similar in #168 which might subsume this feature, though its purpose is a little different.

@gabrielfalcao gabrielfalcao added feature request requires-rebase pull request that became obsolete and needs to be rebased labels Mar 10, 2020
Comment thread httpretty/core.py
if self.expected_data is not None:
body_dict = dict(parse_qsl(request.body))
if body_dict != self.expected_data:
raise ValueError("Body Post didn't match, expected %s, got %s" % (
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should raise an AssertionError instead, that way the test will fail as failure rather than error

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature request requires-rebase pull request that became obsolete and needs to be rebased

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants