मैं अजगर है जो http अनुरोध करता में एक कस्टम एपीआई का परीक्षण कर रहा हूँ के रूप में कार्य करने के लिए अजगर नकली side_effect का उपयोग कैसे करें, लेकिन मैं हर बार जब मैं चलाने के असली बाहरी प्रणाली के लिए एक अनुरोध बनाने के लिए नहीं करना चाहते हैं इकाई परीक्षण। मैं एक side_effect कार्य करने के लिए गतिशील रूप से नकली एपीआई प्रतिक्रिया के साथ अजगर का नकली लाइब्रेरी का उपयोग कर रहा हूँ। क्लास विधि की तरह व्यवहार करने के लिए मैं पक्ष_फैक्ट विधि कैसे प्राप्त करूं?इकाई परीक्षण में एक कक्षा विधि
import requests
class MyApiClass():
def make_request(self, params):
return requests.get('http://someurl.com', params=params)
def create_an_object(self, params):
return self.make_request(params)
import unittest, mock
def side_effect_func(self, params):
if params['name'] == 'Specific Name':
return {'text': 'Specific Action'}
else:
return {'text': 'General Action'}
class MyApiTest(unittest.TestCase):
def setUp(self):
super(MyApiTest, self).setUp()
mocked_method = mock.Mock(side_effect=side_effect_func)
MyApiClass.make_request = mocked_method
def test_create_object(self):
api = MyApiClass()
params = {'name': 'Specific Name'}
r = api.create_an_object(params) # Complains that two arguments are needed!
self.assertEqual(r['text'], 'Specific Action')
मैं यह त्रुटि
TypeError: side_effect_func() takes exactly 2 arguments (1 given)
मिल लेकिन मैं side_effect_func
चाहते api
पहले तर्क के रूप में पारित करने के लिए। किसी भी मदद की सराहना करें!
हाँ, धन्यवाद! मुझे लगता है कि पैच के साथ एक अनबाउंड विधि का मज़ाक करना मुझे चाहिए। यदि नहीं, तो MyApiClass को हार्डकोडिंग के आपके सुझाव को काम करना चाहिए। – conman