這個應用程序是由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。其中一個原因是,你可以單獨測試它。 –