2014-11-18 2 views
1

У меня есть следующий тестовый пример в python.Python как утверждать, что метод был вызван

class RulesTest(TestCase): 

    request_length = 484 
    url = "http://www.ndtv.com" 

    def setUp(self): 
     har_data = open('/Users/rokumar/SiteAnalysisGit/Src/hct/hct/test.har') 
     self.data = json.load(har_data) 
     self.rule = models.Rule(name=RULES.DNS,user=None, 
      threshold=None) 
     self.rule.save() 

    def tearDown(self): 
     self.rule.delete() 

    def test_parse_har(self): 
     with patch.object(rules, 'add_dns_analysis', return_value=None) as \ 
      dns_mock: 
      dns_mock.add_dns_analysis('test result', 'test url') 
      result = rules.parse_har(self.data,[self.rule],RulesTest.url) 
      self.assertEqual(result[RULES.TOTAL_REQUESTS], 484) 
      self.assertEqual(result[RULES.HTML_SIZE], 241592) 
      self.assertEqual(result[RULES.JS_SIZE], 1006469) 
      dns_mock.assert_called_once_with('test result', 'test url') 

Последнее утверждение не подтвердило, что был сделан фактический звонок. Почему питон не обходит этот вызов.

+0

Вы хотите утверждать, был ли 'называется dns_mock', или, вернее,' dns_mock.add_dns_analysis '? –

+0

'assert_called_once_with' используется, чтобы удостовериться, что вызывающий вызов, который не вызван непосредственно вашим тестовым кодом. В этом случае вы * * * вызываете 'add_dns_analysis' напрямую. Если «add_dns_analysis» не имеет побочного эффекта, вы можете удалить патч, вызов и окончательное утверждение, не влияя на результаты теста. – chepner

ответ

1

Может быть, вы хотите проверить, если метод add_dns_analysis был призыв parse_har():

переписать тест как

def test_parse_har(self): 
    with patch.object(rules, 'add_dns_analysis', return_value=None) as \ 
     dns_mock: 
     result = rules.parse_har(self.data,[self.rule],RulesTest.url) 
     self.assertEqual(result[RULES.TOTAL_REQUESTS], 484) 
     self.assertEqual(result[RULES.HTML_SIZE], 241592) 
     self.assertEqual(result[RULES.JS_SIZE], 1006469) 
     dns_mock.assert_called_once_with('test result', 'test url') 
+0

@ user567797 Если вы сочтете полезным этот ответ, вы должны проголосовать за него, а не просто принять. –

Смежные вопросы