mock (http://mock.readthedocs.org/en/latest/index.html) birim testi için Python harika bir araçtır. Bu uygun bir yöntem ya da sınıf taklit veya dict.But ben taklidinin tarafından başa basit bir yol bulamadık bir sorunla karşılaştı. MagicMock bir dict gibi davranmasına nasıl izin verilir?
Bu
fonksiyon test edilecek olan:def function_to_be_tested(id, responses):
if not id in responses:
print '%s not exist'%pole_id
return
if id in responses.redundantErrorResponses:
print '%s is redundant'%pole_id
return
do_something()
argüman tepkileri dict doğal özellikleri dışında (örneğin redundantErrorResponses gibi) başka bir öznitelikleri nesne gibi dict olup. Şimdi id in responses
True ve id in responses.redundantErrorResponses
Yanlış olmaya izin sahte yanıtları inşa etmek istiyorum.
pole_id = 30
pole_value = 100
pole_dic = {pole_id:pole_value}
mock_responses = MagicMock()
mock_responses.__getitem__.side_effect = lambda k: pole_dic[k]
mock_responses.__iter__.side_effect = iter(pole_dic)
mock_responses.redundantErrorResponses = {}
Ama hata oluştu: Bu benim yaptığım
yüzden (a MagicMock nesne arada bir dict gibi yineleme ya da nasıl bir dict arada MagicMock özellikleri destekleyen inşa edebilir inşa nasılfunction_to_be_tested(pole_id, mock_responses)
>>30 not exist
özniteliği serbestçe ekle)
o '' 'function_to_be_tested (pole_id, mock_responses)' '' olmalı:
__contains__
bulaşmak istiyorum geliyor bana? – wwii