8

unittest.TestCaseを使用して、djangoアプリのテストケースを作成しています(これは、基本的にPythonのunittest.TestCaseと同じです)。テストメソッドが失敗するたびに、以下の形式で説明が表示されます。失敗したテストメソッドの出力にカスタム/デバッグメッセージを追加する方法はありますか?

======================================================================
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.']
4

1 に答える 1

10

一般に、django.testからインポートすることで取得できるdjangoのunittestクラスTestCaseから継承する必要があります。そうは言っても、失敗メッセージを含めて、評価しようとしているものすべてに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引数が実際に動作しているのを見ることができます。

于 2012-02-29T19:34:40.240 に答える