Wie kann ich testen, einen API-Client mit Python?
Arbeite ich an einer client-Bibliothek für eine populäre API. Derzeit sind alle meine unit-tests der sagte client, machen die tatsächlichen API-Aufrufe gegen einen test-account.
Hier ein Beispiel:
def test_get_foo_settings(self):
client = MyCustomClient(token, account)
results = client.get_foo_settings()
assert_is(type(results), list)
Möchte ich aufhören die tatsächlichen API-Aufrufe gegen meinen test-account.
Wie sollte ich gegen dieses Problem? Soll ich mich mit Mock zu verspotten, die Aufrufe der client-und-Antwort?
Außerdem bin ich verwirrt über die Philosophie, was zu testen ist mit diesem client-Bibliothek. Ich bin nicht daran interessiert, bei der Prüfung der eigentlichen API, aber wenn es verschiedene Faktoren beteiligt, wie die Methode aufgerufen, die Permutationen der möglichen Ergebnisse zurückgeben, etc - ich bin mir nicht sicher, was ich prüfen soll und/oder wenn es sicher ist, Annahmen zu machen (wie eine ironisierte Antwort).
Jede Richtung und/oder Proben, wie Mock in meine Art von Szenario würde geschätzt.
- Ich habe gelernt, über ein Interessantes Modul für die Prüfung genannt
fudge
könnten Sie, dass der check out.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich persönlich würde es tun, indem zunächst eine einzelne Schnittstelle oder Funktion aufrufen, die Ihre Bibliothek verwendet, um tatsächlich Kontakt mit dem service, dann schreiben Sie ein benutzerdefiniertes mock für die, die während der tests.
Zum Beispiel, wenn der HTTP-Dienst verwendet und bist du mit Anforderungen um den service zu Kontaktieren:
Ich würde zuerst schreiben Sie eine kleine wrapper-Anforderungen:
Dann für tests, ich würde verspotten die entsprechenden Funktionen:
Und verwenden Sie es in tests wie diesem:
Außerdem, es wäre wahrscheinlich von Vorteil sein, schreiben die tests so, dass Sie ausführen können, die Sie sowohl gegen Ihre mock und gegen die wirklichen service, so dass, wenn Dinge scheitern, können Sie schnell herausfinden, wer Schuld ist.
Ich bin mit HTTmock und ich bin ziemlich glücklich mit ihm : https://github.com/patrys/httmock