मैं समझना चाहता हूं कि आयातित मॉड्यूल से @patch
एक फ़ंक्शन कैसे करें।पायथन एक आयातित मॉड्यूल से एक फ़ंक्शन मॉकिंग
यह वह जगह है जहां मैं अब तक हूं।
एप्लिकेशन/mocking.py:
from app.my_module import get_user_name
def test_method():
return get_user_name()
if __name__ == "__main__":
print "Starting Program..."
test_method()
एप्लिकेशन/my_module/__ init__.py:
def get_user_name():
return "Unmocked User"
परीक्षा/mock-test.py:
import unittest
from app.mocking import test_method
def mock_get_user():
return "Mocked This Silly"
@patch('app.my_module.get_user_name')
class MockingTestTestCase(unittest.TestCase):
def test_mock_stubs(self, mock_method):
mock_method.return_value = 'Mocked This Silly')
ret = test_method()
self.assertEqual(ret, 'Mocked This Silly')
if __name__ == '__main__':
unittest.main()
यह काम करता है जैसा कि मैं अपेक्षा करता हूं। "पैच" मॉड्यूल बस get_user_name
का अनमॉक मान देता है। मैं अन्य संकुलों से विधियों का नकल कैसे करूं जिन्हें मैं परीक्षण के तहत नामस्थान में आयात कर रहा हूं?
सवाल "सर्वोत्तम प्रथाओं मजाक" के बारे में या या नहीं, तुम क्या कर रहे समझ में आता है है? पहले के बारे में मैं एक मॉकिंग लाइब्रेरी का उपयोग करना चाहूंगा जैसे कि ['मॉक'] (http://www.voidspace.org.uk/python/mock/), जिसे पायथन 3.3 + में शामिल किया गया है [' unittest .mock'] (http://docs.python.org/dev/library/unittest.mock)। – Bakuriu
मैं पूछ रहा हूं कि क्या मैं इस अधिकार के बारे में जा रहा हूं। मैंने मॉक को देखा, लेकिन मुझे इस विशेष समस्या को हल करने का कोई तरीका नहीं दिख रहा है। क्या मैक में मैंने जो किया है उसे फिर से बनाने का कोई तरीका है? – nsfyn55