2016-07-14 42 views
0

我想在pytest中monkeypatch輸入函數來模擬用戶輸入,但我得到一個屬性錯誤。Monkeypatching輸入在測試期間導致屬性錯誤

當我使用mock.patch.object時也收到相同的錯誤。但是當我在一個普通的Python環境中時,我能夠很容易地修改輸入,我只在測試中遇到這個錯誤。 enter image description here

什麼可能導致此問題?

編輯 添加額外的屏幕截圖嘗試同樣的事情,使用unittest.mock Unittestmockerror

+0

請不要張貼截圖,但您的實際代碼。 – poke

回答

3

__builtins__是一個實現細節。你不應該碰它。什麼你要找的是無論是__builtin__(無s)或builtins模塊,具體取決於您是否是Python的2或3

通過你得到了錯誤的信息來看,你對Python 3的,所以你想builtins

+0

我在Python3上,但我需要用一個返回假輸入的函數替換input()函數。嘗試這個沒有使用裝飾或模擬模塊http://stackoverflow.com/questions/18161330/using-unittest-mock-to-patch-input-in-python-3 – canyon289

+0

@ canyon289我很困惑。你提供了一個使用裝飾器有兩個答案並使用模擬的鏈接。如果你正在尋找輸入來返回假輸入,你就是在嘲笑輸入的功能。所以,我不確定你想要做什麼。 – idjaw

+0

我的程序的一部分需要用戶輸入並返回一個值。我正在嘗試使用pytest進行測試,並且部分測試正在使輸入函數返回一個值。爲了自動執行該測試,我試圖用一個返回測試中設置的字符串來monkeypatch /模擬常規輸入函數。無論使用模擬模塊還是pytest monkeypatch函數,我都會得到相同的錯誤 – canyon289