मैं Parameterizing a fixture सुविधा के बारे में बात कर रहा हूं जो एक स्थिरता को हार्ड-कोडित सेट पैरामीटर के लिए कई बार चलाने की अनुमति देता है।पाइटेस्ट स्थिरता में पैरामीटर को पारित करने का कोई तरीका?
मैं परीक्षण ऐसे ही एक पैटर्न का पालन का एक बहुत है:
httpcode = 401 # this is different per call
message = 'some message' # this is different per call
url = 'some url' # this is different per call
mock_req = mock.MagicMock(spec_set=urllib2.Request)
with mock.patch('package.module.urllib2.urlopen', autospec=True) as mock_urlopen, \
mock.patch('package.module.urllib2.Request', autospec=True) as mock_request:
mock_request.return_value = mock_req
mock_urlopen.side_effect = urllib2.HTTPError(url, httpcode, message, {}, None)
connection = MyClass()
with pytest.raises(MyException):
connection.some_function() # this changes
अनिवार्य रूप से, मैं एक वर्ग एक API ग्राहक है, और कस्टम, सार्थक अपवाद है कि कुछ एपीआई विशेष में urllib2 त्रुटियों लपेट शामिल है कि नहीं है। तो, मेरे पास यह एक पैटर्न है - कुछ तरीकों को पैच करना, और उनमें से एक पर साइड इफेक्ट्स सेट करना। मैं इसे शायद एक दर्जन अलग-अलग परीक्षणों में उपयोग करता हूं, और केवल अंतर तीन चर होते हैं जिनका उपयोग साइड_फैक्ट के हिस्से में किया जाता है, और MyClass() की विधि जिसे मैं कॉल करता हूं।
क्या यह एक सबसे तेज़ स्थिरता बनाने और इन चरों में पारित करने का कोई तरीका है?
मैंने विशेष रूप से कहा कि यह वही नहीं है जो मैं चाहता हूं ... मैं नहीं चाहता कि स्थिरता कई बार बनाई जाए, मैं बस इसमें पैरामीटर पास करना चाहता हूं। –
मेरे कोड स्थिरता में केवल एक बार परीक्षण में चलाता है। वास्तव में मेरा कोड आपके जैसा ही करता है। अंतर जिस तरह से पैरामीटर पारित किया जाता है। यदि आप परीक्षण के अंदर पैरामीटर उत्पन्न करना चाहते हैं और फिर उन्हें स्थिरता में पास करना चाहते हैं - आपका कोड ऐसा करने का एकमात्र तरीका है। यदि पैरामीटर परीक्षण में पूर्वनिर्धारित हैं, तो मेरा कोड –
ठीक है, ठीक है। –