Isolier die Grenze. Pack den HTTP-Aufruf hinter einen dünnen Client und ersetz ihn in Tests durch ein Fake oder patch ihn dort, wo er benutzt wird, nicht dort, wo er definiert ist. Nutz pytest-Fixtures fürs Setup und parametrize für Erfolg, Fehler und Timeout. Ergänze ein paar Contract-Tests gegen die echte Sandbox, damit die Mocks nicht wegdriften.
Warum Interviewer das fragen
Interviewer sehen daran, wie du über Testgrenzen und Design denkst. Wer tief in Interna patcht, sagt damit, dass sein Code keine Nahtstellen hat. Sie hören außerdem auf pytest-Routine, also Fixtures, parametrize und monkeypatch, und auf das Bewusstsein, dass Mocks Annahmen einfrieren, die verrotten, also muss irgendetwas gelegentlich den echten Vertrag prüfen.
So baust du deine Antwort auf
- Entwirf eine Nahtstelle, bevor du über Mocking redest.
- Erklär das Patchen an der Nutzungsstelle.
- Deck Fehlerpfade mit parametrize ab.
- Sicher dich gegen Mock-Drift mit Contract-Tests ab.
Beispielantwort
Testbarkeit ist zuerst eine Designfrage. Steckt der Zahlungsaufruf in der Geschäftslogik, ziehe ich ihn in eine Client-Klasse mit ein paar Methoden heraus, und die Logik nimmt diesen Client als Argument. Ab da brauchen die meisten Tests gar keine Mocking-Library, weil ich ein kleines Fake übergebe, das feste Antworten liefert, was sich leichter liest als ein Stapel patch-Decorators. Wo ich patche, patche ich den Namen im getesteten Modul, nicht im Library-Modul, denn dort zu patchen, wo er definiert ist, bringt nichts, sobald er anderswo importiert wurde. Fixtures bauen die Objekte, und parametrize deckt die interessanten Fälle ab: genehmigt, abgelehnt, Timeout und ein fehlerhafter Payload, denn die Fehlerzweige sind das, was in Produktion tatsächlich bricht. Ich halte außerdem eine Handvoll Tests gegen die Sandbox des Anbieters, getaggt, damit sie nachts laufen statt bei jedem Commit. Das hat eine Änderung gefangen, bei der der Anbieter plötzlich einen Fehlercode zurückgab, den wir nie gemockt hatten.
Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.
So funktioniert esNachfragen, mit denen du rechnen solltest
- Wie vermeidest du Tests, die auf Mock-Interna prüfen?
- Wann ist ein Fake besser als ein MagicMock?
- Wie würdest du Retry- und Backoff-Verhalten testen?
Weitere Fragen für Python-Entwickler
Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.
Meine Fragen vorhersagen