मैं समझना चाहता हूं कि @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
।