Mocking habe ich eine View-Funktion, die Benutzer-Logineine Hilfsfunktion in django Ansicht Test
so etwas wie diesees sieht fordert initiiert:
def initiate_login(request):
# get request parameters
return check_user_and_send_otp(login_id)
Die Anforderung von einer anderen Funktion verarbeitet wird, dann
def check_user_and_send_otp(login_id):
# check if user exits
return send_otp_to_user(phone_number)
Und dann
eine andere Funktiondef send_otp_to_user(phone_number):
# sends a message to user
return response
Das Problem besteht beim Testen meines Codes, ich möchte keine Nachrichten an eine Telefonnummer während des Testens senden.
Meine Anmelde-Test-Funktion sieht ungefähr so aus, ist es möglich, es zu verspotten, ohne meinen Code zu ändern?
def test_login_initiator(self):
response = self.client.post(self.login_url, data=self.login_data, content_type="application/json", **self.headers)
self.assertEqual(response.status_code, 200)
All diese Funktionen, die von anderen genannt wurden, sind in separaten Modulen befindet
danke für die schnelle Antwort, die send_otp Funktion ruft tatsächlich eine API von Drittanbietern, um eine SMS an das Telefon des Benutzers zu senden und die "Antwort" ist, wenn die Nachricht erfolgreich war, kann ich das tatsächliche Code-Snippet, wenn Sie möchten nur um Dinge zu vereinfachen. –
Oh, also im Grunde, Sie versuchen zu überprüfen, ob die Textnachrichten erfolgreich an ein Telefon gesendet werden, aber nicht wirklich eine Nachricht richtig senden möchten? –
Ich möchte nur, dass die Funktion wahr (das die Nachricht gesendet wird) zurückgibt, aber tatsächlich keine Nachricht sendet. Es ist wie das Überschreiben mit etwas wie "return True" –