2017-11-24 4 views
5

Ich habe ein sehr merkwürdiges Verhalten von Nasetests beobachtet, wenn das @ mock.patch.object verwendet wurde Funktion:Das Ausführen von mehreren Tests verursacht Interferenzen in Nasetests beim Patchen mit @ mock.patch.object und manchmal auch bei der Verwendung von `mit mock.patch.object`

Wenn ich mehrere Tests gleichzeitig ausführe, erhalte ich andere Ergebnisse als wenn ich sie einzeln ausführe. Insbesondere scheint es, dass die Überschreibung mit @ mock.patch.object in bestimmten Fällen keine Wirkung hat, wenn ich mehrere Nasetests gemeinsam ausführe. Wenn ich den Patch mit with anwende, tritt dieses Problem nicht auf.

@patch.object(ObjectToOverride,....) 
def test_mytest() 
    # check the override 

Wenn die with Methode verwendet werden, um den Patch, nachfolgende Tests anzuwenden nicht von früheren Tests betroffen.

Alle Vorschläge, die dieses Verhalten verursachen könnten, werden geschätzt.

Wenn ich mehrere Tests ausführen, wird das ObjectToOverride geladen und von vorherigen Tests verwendet. Aber ich verstehe nicht, warum die Verwendung von with oder decorator einen Unterschied macht, ob das Objekt danach noch gepatcht werden kann.

In beiden Fällen kann ich einige Interferenz zwischen den Tests beobachten. Wie kann dies im Nasstest vermieden werden?

+0

Wenn Sie ein konkretes Beispiel für Code bereitstellen könnten, der diesen Fehler reproduziert, wäre es hilfreich. So wie es ist, kann ich das Problem nicht reproduzieren und kann nicht wirklich helfen. – Grr

Antwort

2

Das Problem scheint mit Tests verbunden zu sein, die Fehler auslösen. Danach wird der Patch nicht korrekt abgerissen.

Verwandte Themen