我不知道我在做什麼錯。也許我有嘲弄的棍棒的錯誤結局。但我的假設是,當你使用模擬它基本上會做一些魔術,並替換原始代碼中的對象。用嘲笑代替物體
sites.py
class Sites:
def __init__(self):
pass
def get_sites(self):
return ['washington', 'new york']
my_module.py
from mylib import sites
def get_messages():
# get Sites
sm = sites.Sites()
sites = sm.get_sites()
print('Sites:' , sites)
for site in sites:
print('Test: ' , site)
my_test.py
import my_module
import unittest
from unittest.mock import patch
class MyModuleTestCase(unittest.TestCase):
@patch('my_module.Sites')
def test_process_the_queue(self, mock_sites):
mock_sites.get_sites.return_value = ['london', 'york']
print(mock_sites.get_sites())
my_module.get_messages()
if __name__ == '__main__':
unittest.main()
運行此我得到以下輸出:
.['london', 'york']
Sites: <MagicMock name='Sites().get_sites()' id='139788231189504'>
----------------------------------------------------------------------
Ran 1 test in 0.002s
OK
[Finished in 0.1s]
我期待第二次打印輸出(發生在my_module.py中)與第一次打印輸出相同,並通過作爲返回值傳遞的列表進行循環。
任何幫助將不勝感激。
更新 爲了證明我是怎麼最初導入我的課
煩人這項功能對我做了演示,但不適合我實際代碼>。< –
Woohoo。得到它的工作!謝謝你指引我朝着正確的方向前進。 –