[pytest-dev] Customising repr() output for super-expressions of failed assertions

Nicholas Williams nicholas+pytest at nicholaswilliams.net
Thu Jun 13 11:38:04 EDT 2019


We had a different approach altogether. We do something like this, which
prints both the diff and the content, but doesn’t print the content if
there’s no failure:

assert response.status == 200, response.content.decode('utf-8')

Now the response content is used as the assertion error message, so if the
status code isn’t 200, the incorrect status code AND the content are
printed.

Nick

On Thu, Jun 13, 2019 at 7:09 AM Nicholas Williams <
nicholas at nicholaswilliams.net> wrote:

> We had a different approach altogether. We do something like this, which
> prints both the diff and the content, but doesn’t print the content if
> there’s no failure:
>
> assert response.status == 200, response.content.decode('utf-8')
>
> Now the response content is used as the assertion error message, so if the
> status code isn’t 200, the incorrect status code AND the content are
> printed.
>
> Nick
>
> Sent from my iPhone, so please forgive brief replies and frequent typos
>
> On Jun 13, 2019, at 05:28, Joep Schuurkes <j19sch at gmail.com> wrote:
>
> Not sure if this would work for your setup, but we solved that by defining
> a generic api client class with a logging method that's added to the hooks
> on the response object of the requests library. Each specific api client
> class then inherits from the generic one.
>
> Regards,
> Joep
>
> On Thu, Jun 13, 2019, 12:19 Craig de Stigter <craig.ds at gmail.com> wrote:
>
>> Thanks for the replies.
>>
>> We do already use the print-before-assert pattern. It'd be nice to be
>> able to fold this away in a hook so each individual request test doesn't
>> need to think about it. But using print() is perfectly fine too :)
>>
>>
>>
>>
>> On Thu, 13 Jun 2019 at 19:35, Joep Schuurkes <j19sch at gmail.com> wrote:
>>
>>> Hi,
>>>
>>> On Thu, Jun 13, 2019, 10:25 Florian Bruhin <me at the-compiler.org> wrote:
>>>
>>>> Hey,
>>>>
>>>> On Thu, Jun 13, 2019 at 12:02:01PM +1200, Craig de Stigter wrote:
>>>> > This output isn't terribly useful at present. We'd like to
>>>> automatically
>>>> > dump the request body (`r.content`) in the output, wherever it's a
>>>> django
>>>> > response object, to aid debugging.
>>>>
>>>> It'd be cool if this were possible with hooks (I'm not sure whether it
>>>> is) -
>>>> but FWIW, what I've done so far in such situations is
>>>> "print(r.content)" in the
>>>> test. That way, pytest shows you the output when a test failed, but
>>>> hides it
>>>> for passing tests.
>>>>
>>>> Florian
>>>>
>>>> --
>>>> https://www.qutebrowser.org | me at the-compiler.org (Mail/XMPP)
>>>>    GPG: 916E B0C8 FD55 A072 | https://the-compiler.org/pubkey.asc
>>>>          I love long mails! | https://email.is-not-s.ms/
>>>> _______________________________________________
>>>> pytest-dev mailing list
>>>> pytest-dev at python.org
>>>> https://mail.python.org/mailman/listinfo/pytest-dev
>>>
>>>
>>> We use logging similar to the print mentioned by Florian. I also created
>>> a pytest plugin to have some options for how the generated logs are written
>>> to file: https://pypi.org/project/pytest-logfest/
>>>
>>> Regards,
>>> Joep
>>>
>> _______________________________________________
> pytest-dev mailing list
> pytest-dev at python.org
> https://mail.python.org/mailman/listinfo/pytest-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pytest-dev/attachments/20190613/ba803ddd/attachment.html>


More information about the pytest-dev mailing list