Ich habe so etwas wie dies:eine Klasse als Argument übergeben Mocking
class ThisClass:
def my_method(self, param):
# Do normal stuff
pass
class OtherClass:
def my_method(self, param):
# Do crazy stuff
pass
def useful_function(some_class, some_param):
internal = some_class()
result = internal.my_method(some_param)
uses_result(result)
# The useful_function can be called with any of the classes
useful_function(ThisClass, 10)
Was ich will ist zu prüfen, um zu tun, wenn my_method
innerhalb useful_function
genannt wurde. Ich habe versucht, die Klasse und ihre Methode zu verspotten, aber es hat nicht funktioniert:
# Inside the test class
def test_case(self):
MockSomeClass = mock.Mock()
MockSomeClass.my_method.return_value = 'Some useful answer'
useful_function(MockSomeClass, 100)
MockSomeClass.my_method.assert_called_once()
Der Fehler beruht auf der Tatsache ich das Ergebnis von my_method
in uses_result
verwenden, aber die verspottete Methode nicht zurück 'Some useful answer'
wie erwartet. Was mache ich falsch?
Es arbeitete wie ein Charme. Um die Antwort zu vervollständigen, muss die Assertion wie folgt ausgeführt werden: 'MockSomeClass.return_value.my_method.assert_called_once()'. Vielen Dank! – lucastamoios