在mock、pytest(或一般情况下)中表示调用差异的更好方法

2024-09-29 21:53:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到的问题是,我使用的是python(2.7)中的mock库,我看到的错误如下:

    def raise_from(value, from_value):
>       raise value
E       AssertionError: Expected call: run_sync(country_code='GB', email_data={'username': 'username-1n@n3m((', 'hotelier_name': 'Alexander QW*!@H#(!*@#', 'id': 'hotel-id-8nabqtQW', 'hotelier_email': 'alexander@rnwmenrqnweq#!@#.com', 'name': 'hotel-name-8nabqtQW'}, i18n_labels=<MagicMock name='elami_labels' id='140095030265936'>, mail_service=<MagicMock name='mock.mail_service.users().messages()' id='140095028784272'>, partner_id='partner-facebooking-@j344', partner_name='partner-name-ANQWWEnn', product=<Product object at 0x7f6a6ad1da50>, username='username-1n@n3m((')
E       Actual call: run_sync(country_code='GB', email_data={'username': 'username-1n@n3m((', 'hotelier_name': 'Alexander QW*!@H#(!*@#', 'id': 'hotel-id-8nabqtQW', 'hotelier_email': 'alexander@rnwmenrqnweq#!@#.com', 'name': 'hotel-name-8nabqtQW'}, i18n_labels=<MagicMock name='elami_labels' id='140095030265936'>, mailing_service=<MagicMock name='mock.mail_service.users().messages()' id='140095028784272'>, partner_id='partner-facebooking-@j344', partner_name='partner-name-ANQWWEnn', product=<Product object at 0x7f6a6ad1da50>, username='username-1n@n3m((')

这看起来没问题,因为滚动,但它看起来更糟的控制台。像这样:

E AssertionError: Expected call: run_sync(country_code='GB', email_data={'username': 'username-1n@n3m((', 'hotelier_name': 'Alexander QW*!@H#(!*@#', 'id': 'hotel-id-8nabqtQW', 'hotelier_email': 'alexander@rnwmenrqnweq#!@#.com', 'name': 'hotel-name-8nabqtQW'}, i18n_labels=, mail_service=, partner_id='partner-facebooking-@j344', partner_name='partner-name-ANQWWEnn', product=, username='username-1n@n3m((')

E Actual call: run_sync(country_code='GB', email_data={'username': 'username-1n@n3m((', 'hotelier_name': 'Alexander QW*!@H#(!*@#', 'id': 'hotel-id-8nabqtQW', 'hotelier_email': 'alexander@rnwmenrqnweq#!@#.com', 'name': 'hotel-name-8nabqtQW'}, i18n_labels=, mailing_service=, partner_id='partner-facebooking-@j344', partner_name='partner-name-ANQWWEnn', product=, username='username-1n@n3m((')

即便如此,由于这两条线没有对齐,很难发现差异

有什么工具可以解决这个问题吗?我不擅长pytest扩展,但是如果没有,我应该写一个-如果可能的话。我相信很多人都有这个问题

或者也许有某种方法,独立于py.test来显示这样的差异。。。一种快速解析调用并将其显示为错误的方法


Tags: runnameidpartnerlabelsemailserviceusername

热门问题