Interviewfrage für Python-Entwickler

Wie würdest du eine Funktion testen, die eine Drittanbieter-Zahlungs-API aufruft?

Worauf der Interviewer abzielt, wie du deine Antwort aufbaust und ein gesprochenes Beispiel zum Anpassen.

Kurzantwort

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

Gesprochenes Beispiel, erste Person

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 es

Nachfragen, 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

Üb die harten Fragen, bevor sie gestellt werden

Trainier mit einem Live-Copiloten und geh dann vorbereitet rein. Ein $29 Session Pass bringt dich durch das Vorstellungsgespräch, ohne Abo und ohne Bindung.

GhostPilot holen