I am using unittest.TestCase to write test cases for my django app (which is essentially the same unittest.TestCase from python). Whenever a test method fails, I get the explanation of it in the format below. Is there a way that I can add custom/debug messages to the output of failed test method?
我正在使用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.']
1 个解决方案
#1
7
In general, you want to inherit from django's unittest class TestCase, which you can get by importing from django.test. That said, you can pass a msg argument to whatever you're trying to evaluate, containing the failure message.
通常,您希望从django的unittest类TestCase继承,您可以通过从django.test导入来获取它。也就是说,您可以将msg参数传递给您要评估的任何内容,其中包含失败消息。
Here's an example from Humanize:
以下是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))
Obviously, yours doesn't need to look like the above, but you can see the msg argument in action.
显然,你的不需要像上面那样,但你可以看到msg参数在行动。
#1
7
In general, you want to inherit from django's unittest class TestCase, which you can get by importing from django.test. That said, you can pass a msg argument to whatever you're trying to evaluate, containing the failure message.
通常,您希望从django的unittest类TestCase继承,您可以通过从django.test导入来获取它。也就是说,您可以将msg参数传递给您要评估的任何内容,其中包含失败消息。
Here's an example from Humanize:
以下是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))
Obviously, yours doesn't need to look like the above, but you can see the msg argument in action.
显然,你的不需要像上面那样,但你可以看到msg参数在行动。