2017-11-24 93 views
5

Obserwowałem bardzo dziwne zachowanie podczas testów nosa podczas używania obiektu @ mock.patch.object funkcja:Uruchamianie wielu testów powoduje zakłócenia w testach nosa podczas łatania przy użyciu funkcji @ mock.patch.object, a czasami także podczas używania `with mock.patch.object`

Po uruchomieniu wielu testów w tym samym czasie uzyskuję inne wyniki niż wtedy, gdy uruchamiam je pojedynczo. W szczególności zdarza się, że przesłonięcie obiektu @ mock.patch.object wydaje się nie mieć żadnego skutku, w niektórych przypadkach, gdy wykonuję wiele prób naskórka. Po zastosowaniu poprawki z with ten problem nie występuje.

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

Przy wykorzystaniu metody with zastosować poprawkę, kolejne testy nie są dotknięte przez poprzednich testów.

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

Wszelkie sugestie, co może powodować takie zachowanie, są mile widziane.

Po uruchomieniu wielu testów obiekt ObjectOverride zostanie załadowany i użyty w poprzednich testach. Ale nie rozumiem, dlaczego użycie z dekoratorem ma wpływ na to, czy obiekt może być dalej łatany.

W obu przypadkach mogę zaobserwować pewne zakłócenia między testami. Jak można tego uniknąć w teście nosa?

+0

Jeśli mógłbyś podać konkretny przykład kodu, który odtwarza ten błąd, byłoby to pomocne. Ponieważ nie mogę odtworzyć problemu i nie mogę naprawdę pomóc. – Grr

Odpowiedz

2

Problem wydaje się być związany z testami, które powodują błędy. Po tym łatka nie jest prawidłowo zrywana.

Powiązane problemy