Jak używać Pythona Mocka, aby zgłosić wyjątek - ale z Errno ustawionym na określoną wartość

Biorąc pod uwagę ten kod Pythona:

elif request.method == 'DELETE':
    try:
        os.remove(full_file)
        return jsonify({'results':'purged %s' % full_file})

    except OSError as e:
        if e.errno != errno.ENOENT:
            raise

        return jsonify({'results':'file not present: %s' % full_file})

Chcę przetestować wszystkie możliwe ścieżki, w tym obsługę wyjątków. Używając Mocka, jest to łatwepodnieść wyjątek, który robię z tym kodem:

with patch('os.remove', new=Mock(side_effect=OSError(errno.ENOENT))):
    self.assertRaises(OSError, self.app.delete, file_URL) # broken

Mock wywołuje wyjątek, który ma wydrukowaną wartość 2 (ENOENT) - alee.errno jest ustawiony na NONE. I jak dotąd nie znalazłem sposobu, aby to ustawić. Wynikiem tego jest zawsze wyjątekponownie podniesionyi nigdy nie docieram do ostatniej linii kodu w moim teście jednostkowym.

Próbowałem również utworzyć fikcyjną klasę z ustawionym errno i zwrócić ją. Ale chyba że ma on * side_effect * ustawiony do wywołania, nie zgłosi wyjątku, a kiedy ustawię side_effect, nie otrzymam object.errno jako wartości zwracanej.

Czy istnieje sposób, aby Mock wywołał wyjątek, w którym obiekt Exception maerrno zestaw atrybutów?

questionAnswers(1)

yourAnswerToTheQuestion