Приложение написано kivy. Я хочу протестировать функцию через pytest, но для проверки этой функции мне нужно сначала инициализировать объект, но при инициализации объекту нужно что-то из пользовательского интерфейса, но я нахожусь на этапе тестирования, поэтому не знаю, как получить что-то из пользовательского интерфейса.
Это класс, который имеет ошибку и был обработан
class SaltConfig(GridLayout):
def check_phone_number_on_first_contact(self, button):
s = self.instanciate_ServerMsg(tt)
try:
s.send()
except HTTPError as err:
print("[HTTPError] : " + str(err.code))
return
# some code when running without error
def instanciate_ServerMsg():
return ServerMsg()
Это вспомогательный класс, который генерирует объект ServerMsg, используемый предыдущим классом.
class ServerMsg(OrderedDict):
def send(self,answerCallback=None):
#send something to server via urllib.urlopen
Это мой тестовый код:
class TestSaltConfig:
def test_check_phone_number_on_first_contact(self):
myError = HTTPError(url="http://127.0.0.1", code=500,
msg="HTTP Error Occurs", hdrs="donotknow", fp=None)
mockServerMsg = mock.Mock(spec=ServerMsg)
mockServerMsg.send.side_effect = myError
sc = SaltConfig(ds_config_file_missing.data_store)
def mockreturn():
return mockServerMsg
monkeypatch.setattr(sc, 'instanciate_ServerMsg', mockreturn)
sc.check_phone_number_on_first_contact()
Я не могу инициализировать объект, он выдает AttributeError при инициализации, так как ему нужно какое-то значение из пользовательского интерфейса.
Поэтому я застреваю.
Я попытался смоделировать объект, а затем исправить функцию на исходную, но это тоже не сработает, поскольку сама функция имеет логику, связанную с пользовательским интерфейсом.
Как это решить? Спасибо