У меня есть функция, которую я пытаюсь протестировать, которая использует функцию .endswith, но каждый раз, когда я пытаюсь смоделировать ее с помощью патча, я получаю сообщение об ошибке.
with patch("killme.endswith",MagicMock()) as mock_endswith
Я пытался заменить killme.endswith
на следующее:
killme.UserString.endswith
killme.__builtin__.endswith
killme.__builtin__.str.endswith
killme.str.endswith
killme.py
def foo(in_str):
if in_str.endswith("bob"):
return True
return False`
killme_test.py
import killme
import unittest
from mock import MagicMock, patch
class tests(unittest.TestCase):
def test_foo(self):
with patch("killme.endswith", MagicMock()) as mock_endswith:
mock_endswith.return_value = True
result = killme.foo("xxx")
self.assertTrue(result)
Ошибка:
Traceback (most recent call last):
File "C:\Python27\lib\unittest\case.py", line 329, in run
testMethod()
File "C:\Users\bisaacs\Desktop\gen2\tools\python\killme_test.py", line 8, in test_foo
with patch("killme.endswith", MagicMock()) as mock_endswith:
File "C:\Python27\lib\site-packages\mock\mock.py", line 1369, in __enter__
original, local = self.get_original()
File "C:\Python27\lib\site-packages\mock\mock.py", line 1343, in get_original
"%s does not have the attribute %r" % (target, name)
AttributeError: <module 'killme' from 'C:\Users\bisaacs\Desktop\gen2\tools\python\killme.py'> does not have the attribute 'endswith'