Ich bin mir nicht sicher, was ich falsch mache. Vielleicht habe ich das falsche Ende des Stocks mit Spott. Aber meine Annahme war, dass wenn du Mocks verwendest, es im Grunde ein bisschen Magie macht und Objekte in deinem ursprünglichen Code ersetzt.Ersetzen eines Objekts mit 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()
Ausführen dieses ich folgende Ausgabe:
.['london', 'york']
Sites: <MagicMock name='Sites().get_sites()' id='139788231189504'>
----------------------------------------------------------------------
Ran 1 test in 0.002s
OK
[Finished in 0.1s]
Ich erwartete die zweite Druckausgabe (die in my_module.py auftritt), die gleiche wie die erste und die Schleife durch die Liste, die ich als Rückgabewert durchlaufen.
Jede Hilfe würde sehr geschätzt werden. auf jeden Fall nicht sehr intuitiv zu bedienen
Aktualisiert Um zu zeigen, wie ich ursprünglich meine Klasse
Ärgerlicher funktioniert dies für die Demo, die ich gemacht, aber nicht für meine tatsächlicher Code>. < –
Woohoo. Habe es geschafft zu arbeiten! Danke, dass du mich in die richtige Richtung gelenkt hast. –