Я не уверен, что я делаю неправильно. Возможно, у меня неправильный конец палки с насмешкой. Но мое предположение заключалось в том, что когда вы используете mocks, он в основном делает какую-то магию и заменяет объекты в вашем исходном коде.Замена объекта с помощью mocks
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. Получил это, чтобы работать! Спасибо, что помогли мне в правильном направлении. –