में काम नहीं कर रहा है, मैं एक विधि के भीतर से एक नकली वापस करने के लिए पैच का उपयोग करने की कोशिश कर रहा हूं। मूल संरचना निम्नानुसार है:मॉक पैच कक्षा के साथ __init__.py
MyCode.py
class MyClass:
def __init__(self, first_name, last_name):
self.first = first_name
self.last = last_name
def get_greeting(self):
return 'Hello {f} {l}'.format(f=self.first, l=self.last)
def get_new_greeting(first_name, last_name):
obj = MyClass(first_name, last_name)
return obj.get_greeting()
my_code_test.py
import unittest
from mock import Mock, patch
import my_code
class TestMyCode(unittest.TestCase):
def setUp(self):
pass
@patch('my_code.MyClass')
def test_get_greeting(self, MockClass):
instance = MockClass.return_value
mock_greeting = 'Hello Me'
instance.get_greeting.return_value = mock_greeting
greeting = my_code.get_new_greeting('john', 'doe')
self.assertEqual(greeting, mock_greeting)
if __name__ == '__main__':
unittest.main()
उपरोक्त कोड मेरे लिए ठीक काम करता है। हालांकि, जब मैं वास्तविक कोड के लिए एक ही पैटर्न लागू करता हूं जिसे मैं परीक्षण करने की कोशिश कर रहा हूं, वास्तविक वस्तु (नकली नहीं) परीक्षण की विधि में वापस आती है। मुझे कोई मतभेद नहीं दिख रहा है। एकमात्र ऐसा लगता है कि थोड़ा अलग है कि वास्तविक वर्ग init .py फ़ाइल में परिभाषित किया गया है। मुझे यकीन नहीं है कि इससे कोई फर्क पड़ता है या नहीं? क्या इससे पहले कोई देखा है?
नोट: वास्तविक lib twilio 3.3.5 है और मैं अजगर 2.6.5 और Django 1.3.1 और 0.7.2 नकली
आपको शायद उस कोड को पोस्ट करने की आवश्यकता है जो कोड नहीं है, जो कोड है। –
@DanielRoseman बहुत मान्य बिंदु। इस दृष्टिकोण का उपयोग करने का कारण यह था कि मुझे लगता है कि बहुत कम लोगों के पास ट्विलियो पैकेज होगा और शायद इसे इंस्टॉल नहीं करना चाहते हैं (हालांकि वर्चुअलएन्व का उपयोग कर रहे हैं तो यह एक बड़ा सौदा नहीं है), और मैं यह दिखाना चाहता था कि मैं समझ गया मुझे जो करना है उसका बुनियादी सिद्धांत। आपके जवाब के लिए धन्यवाद। –