У меня есть следующий тестовый пример в 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')
Последнее утверждение не подтвердило, что был сделан фактический звонок. Почему питон не обходит этот вызов.
Вы хотите утверждать, был ли 'называется dns_mock', или, вернее,' dns_mock.add_dns_analysis '? –
'assert_called_once_with' используется, чтобы удостовериться, что вызывающий вызов, который не вызван непосредственно вашим тестовым кодом. В этом случае вы * * * вызываете 'add_dns_analysis' напрямую. Если «add_dns_analysis» не имеет побочного эффекта, вы можете удалить патч, вызов и окончательное утверждение, не влияя на результаты теста. – chepner