Любые способы добавить пользовательское / отладочное сообщение к деталям неудачного теста метода python / django unittest.TestCase? - PullRequest
6 голосов
/ 29 февраля 2012

Я использую unittest.TestCase для написания тестовых случаев для моего приложения django (которое по сути является тем же unittest.TestCase из python). Всякий раз, когда метод теста терпит неудачу, я получаю объяснение этого в формате ниже. Есть ли способ, которым я могу добавить пользовательские / отладочные сообщения к выводу метода неудачного теста?

======================================================================
FAIL: test_bad_votes (polls.tests.views.PollsViewsTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/colinh/Development/tutorials/guide-to-testing-in-django/polls/tests/views.py", line 66, in test_bad_votes
    self.assertEqual(resp.context['form']['choice'].errors, [u'This field is required.'])
AssertionError: [] != [u'This field is required.']

1 Ответ

8 голосов
/ 29 февраля 2012

Как правило, вы хотите унаследовать от юнит-класса django TestCase, который вы можете получить, импортируя из django.test. Тем не менее, вы можете передать аргумент msg тому, что вы пытаетесь оценить, содержащему сообщение об ошибке.

Вот пример из Humanize:

class HumanizeTests(TestCase):

    def humanize_tester(self, test_list, result_list, method):
        # Using max below ensures we go through both lists
        # However, if the lists are not equal length, this raises an exception
        for test_content, result in zip(test_list, result_list):
            t = Template('{%% load humanize %%}{{ test_content|%s }}' % method)
            rendered = t.render(Context(locals())).strip()
            self.assertEqual(rendered, escape(result),
                         msg="%s test failed, produced '%s', should've produced '%s'" %     (method, rendered, result))

Очевидно, что вам не нужно выглядеть так, как указано выше, но вы можете увидеть аргумент msg в действии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...