2012-02-29 10 views
5

Używam unittest.TestCase do pisania przypadków testowych dla mojej aplikacji django (która jest w zasadzie taka sama unittest.TestCase z Pythona). Ilekroć metoda testowa zawodzi, otrzymuję wyjaśnienie tego w poniższym formacie. Czy istnieje sposób, w jaki mogę dodać komunikaty niestandardowe/debugowania do wyjścia nieudanej metody testowania?Jakieś sposoby dodania komunikatu niestandardowego/debugowania do szczegółów nieudanej metody testowania python/django 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.'] 

Odpowiedz

7

W ogóle, chcesz dziedziczyć z Django unittest klasy TestCase, które można uzyskać poprzez import z django.test. Powiedział, że możesz przekazać argument msg do tego, co próbujesz ocenić, zawierając komunikat o błędzie.

Oto przykład z uczłowieczyć:

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)) 

Oczywiście, twoje nie musi wyglądać jak wyżej, ale widać argument msg w akcji.

+3

Jeśli zaznaczysz definicję funkcji "assertEqual', zobaczysz, że akceptuje ona argument msg' def assertEqual (self, first, second, msg = None): ' –

Powiązane problemy