这个应用程序是由kivy编写的。 我想测试通过pytest的功能,但为了测试功能,我需要先initalize对象,但initalizing当对象需要从UI的东西,但我在测试阶段,所以不知道如何从UI中检索某些内容。如何在测试由kivy编写的应用程序时与UI进行交互?
这是具有一个错误并已处理
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()
我不能初始化对象,它会initialzing时,因为它需要从UI的一些值抛出一个AttributeError。
所以我会被卡住。
我试图嘲弄那么对象修补功能,原来的一个,但不会工作,要么与UI,因为函数本身具有逻辑。
如何解决?由于
听起来像一个设计缺陷。逻辑不应该依赖于UI。其中一个原因是,你可以单独测试它。 –