मैं समझना चाहता हूं कि @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। मैं अन्य पैकेजों से कैसे तरीकों का मजाक उड़ाता हूं जो मैं परीक्षण के तहत एक नामस्थान में आयात कर रहा हूं?
Mockमॉकिंग लाइब्रेरी का उपयोग करने के लिए कहूंगा , जैसे कि python3.3 + में शामिल हैunittest.mock।