class TestHBVbs3(object):
@patch.object(Hbvbs3, 'GetConfigClass')
def test_get_grower_list(self, config_data, mock_requests_get):
# Arrange
config_data.return_value = ConfigMock()
post_response = {'1st_key': '1st_value', '2nd_key': '2nd_Value'}
mock_requests_get.return_value = MagicMock(status_code=200, post_response=post_response)
# Act
sut = Hbvbs3()
the_response = sut.get_growers_list()
# Assert
assert_equals(the_response.response["1st_key"], mock_requests_get.return_value.response["1st_key"])
assert_equals(the_response.response["2nd_key"], mock_requests_get.return_value.response["2nd_key"])
assert_equals(the_response.response, mock_requests_get.return_value.response)
assert_equals(the_response.status_code, mock_requests_get.return_value.status_code)
Actual code in hbvbs3.py:
class Hbvbs3(object):
_logger = log.logging.getLogger("Hbvbs3")
def get_growers_list(self):
dbconfig = GetConfigClass()
Mein Problem: Ich konnte nicht herausfinden, wie erfolgreich die Anmerkung verwenden, um dies zu verspotten: @ patch.object (Hbvbs3, ‚GetConfigClass‘) # Dieses Stück Code funktioniert nicht. Ich musste schließlich die GetConfigClass-Instantiierung in eine Hilfsmethode setzen und diesen Aufruf vortäuschen, aber ich hoffte, dass ich Hilfe bekommen konnte, diese spezifische Instantiierung in der Methode selbst zu verspotten: "get_growers_list (self):" ... - Wie verspottet man diese Art der Instanziierung innerhalb einer Instanzmethode meiner Klasse Hbvbs3 unter Verwendung der Scheinannotationen? habe ich versucht, alle möglichen Kombinationen in der Anmerkung, wie:Python Mocking für Testeinheit mit Py.Test
@patch('Hbvbs3.GetConfigClass')
@patch.object(Hbvbs3, '__main__.GetConfigClass')
@patchHbvbs3('_get_growers_list.GetConfigClass')
Nichts davon gearbeitet, so ist es eine Möglichkeit, mit Anmerkungen in Python zu einfach, diese Art von Instanziierung zu Mock? Das scheint nicht so schwer zu sein, aber ich werde verdammt sein, wenn ich die richtige Kombination für die Annotation finde. Bitte lassen Sie mich wissen, wo ich falsch liege? Danke!
Vielen Dank. Ich werde es versuchen und Sie wissen lassen, ob es funktioniert. Ich schätze die Hilfe! –