ImportError: मॉक नाम का कोई मॉड्यूल नहीं


83

तो मैं अपने यूनिट परीक्षणों में मेरे कुछ तरीकों का मजाक उड़ाने के लिए unittest.mock का उपयोग करने की कोशिश कर रहा हूं। मैं करता हूँ:

from unittest.mock import MagicMock
f = open("data/static/mock_ffprobe_response")
subprocess.check_output = MagicMock(return_value=f.read())
f.close()

लेकिन मुझे मिल रहा है:

ImportError: No module named mock

मैंने कोशिश की:

pip install mock

यह अभी भी काम नहीं कर रहा है।


1
यह मॉड्यूल ३.३ संस्करण में उपलब्ध है।, आपका संस्करण क्या है

1
मेरा संस्करण 2.7 है। क्या कोई विकल्प है?
रिचर्ड नॉप

1
Google के अनुसार यह 2.7 पर भी काम करना चाहिए।
रिचर्ड नोप

जवाबों:


111

unittestएक अंतर्निहित मॉड्यूल है; mockएक बाहरी पुस्तकालय है (पूर्व 3.3 शर्त, वैसे भी)। के mockमाध्यम से स्थापित करने के बाद pip install, आप इसका उपयोग करके आयात करते हैं

from unittest.mock import MagicMock

परंतु

from mock import MagicMock

संपादित करें: मॉड्यूल (Python3.3 के बाद से) mockमें शामिल किया गया है unittest, और इसके द्वारा आयात किया जा सकता है import unittest.mock


पायथन 3.3+ पर आपको इसके विपरीत करने की आवश्यकता है जो यह उत्तर बताता है:from unittest.mock import MagicMock
बोरिस

19

पायथन 2.7 के लिए:

नकली स्थापित करें:

pip install mock

फिर परीक्षण कोड में, इस आयात का उपयोग करें:

from mock import patch, MagicMock

13

यदि आप दोनों का समर्थन करना चाहते हैं, तो पायथन 2 और पायथन 3, आप निम्न का भी उपयोग कर सकते हैं:

import sys
if sys.version_info >= (3, 3):
    from unittest.mock import MagicMock
else:
    from mock import MagicMock

या, यदि आप आयात नहीं करना चाहते हैं sys

try:
    from unittest.mock import MagicMock
except ImportError:
    from mock import MagicMock

6

किसी कारण से, import unittest.mockमेरे लिए काम नहीं किया, मुझे करना पड़ा

from unittest import mock

4

जब मैं चल रहा था तो मैं आयात पर समस्याओं का सामना कर रहा था pytest। यह मेरे pytest2.7 संस्करण का था python, जबकि मेरा virtualenv3.6 था python। मैंने इसे pip installअपने से virtualenvऔर फिर उपयोग pytestसे तय किया env/bin/pytest



3

परिवर्तन

import mock

सेवा

from unittest import mock

ऐसा इसलिए होता है क्योंकि पायथन 3.3 के साथ unittest.mock एक अंतर्निहित मॉड्यूल है , लेकिन पुराने संस्करणों के लिए PyPI पर एक बैकपोर्ट है , जिसे आप के रूप में स्थापित कर सकते हैं pip install mockऔर फिर आयात कर सकते हैं import mock

यदि आप 3.3 या बाद के पायथन का उपयोग कर रहे हैं, तो आपको कुछ भी स्थापित करने की आवश्यकता नहीं है, आपको बस इसे आयात करना होगा from unittest import mock

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.