के बजाय मैजिकमॉक ऑब्जेक्ट देता है मेरे पास एक पायथन फ़ाइल a.py
है जिसमें दो वर्ग A
और B
शामिल हैं।पायथन रिटर्न_वल्यू
class A(object):
def method_a(self):
return "Class A method a"
class B(object):
def method_b(self):
a = A()
print a.method_a()
मैं A
मजाक द्वारा वर्ग B
में method_b
unittest करना चाहते हैं। यहाँ इस उद्देश्य के लिए फ़ाइल testa.py
की सामग्री है:
import unittest
import mock
import a
class TestB(unittest.TestCase):
@mock.patch('a.A')
def test_method_b(self, mock_a):
mock_a.method_a.return_value = 'Mocked A'
b = a.B()
b.method_b()
if __name__ == '__main__':
unittest.main()
मैं उत्पादन में Mocked A
प्राप्त करने की उम्मीद। लेकिन मुझे क्या मिलता है:
<MagicMock name='A().method_a()' id='4326621392'>
मैं गलत कहां कर रहा हूं?
परीक्षण करते समय, 'ए() '' mock_A' से 'return_value' लौटाता है (एक नियमित' MagicMock', जैसा कि आपने कुछ और निर्दिष्ट नहीं किया है), जो कक्षा 'ए' का उदाहरण नहीं है। आपको उस 'return_value' को कुछ ऐसा करने के लिए सेट करना होगा जिसमें परिभाषित' method_a' हो। – jonrsharpe
mock_a.method_a.return_value = 'मॉक ए' => mock_a()। Method_a.return_value = 'मॉक ए' बेहतर होना चाहिए :) –
@AliSAIDOMAR ठीक है, यह 'mock_a' को कॉल करने से वापसी मूल्य है जिसमें होना चाहिए विधि, 'mock_a' स्वयं नहीं। – jonrsharpe