निकट से संबंधित में एक संदर्भ प्रबंधक का उपयोग करने:In python, is there a good idiom for using context managers in setup/teardownpy.test - कैसे एक funcarg/स्थिरता
मैं एक संदर्भ प्रबंधक उस समय/समय क्षेत्र तय करने के लिए परीक्षण में इस्तेमाल किया जाता है। मैं इसे एक सबसे मजेदार मकसद में रखना चाहता हूं (या स्थिरता, हम pytest
2.2.3 का उपयोग कर रहे हैं लेकिन मैं पीछे की ओर अनुवाद कर सकता हूं)। मैं तो बस ऐसा कर सकता है:
def pytest_funcarg__fixedTimezone(request):
# fix timezone to match Qld, no DST to worry about and matches all
# Eastern states in winter.
fixedTime = offsetTime.DisplacedRealTime(tz=' Australia/Brisbane')
def setup():
fixedTime.__enter__()
return fixedTime
def teardown(fixedTime):
# this seems rather odd?
fixedTime.__exit__(None, None, None)
... लेकिन यह एक बिट को भावुक है। संबंधित प्रश्न jsbueno अंक: समस्या यह है कि अपवाद होने पर आपके कोड में ऑब्जेक्ट की __exit__
विधि को ठीक से कॉल करने का कोई प्रावधान नहीं है।
His answer मेटाक्लास दृष्टिकोण का उपयोग करता है। लेकिन यह पाइस्टेस्ट के लिए उपयोगी नहीं है जहां अक्सर परीक्षण केवल कार्य होते हैं, कक्षाओं में नहीं। तो इसे हल करने के लिए सबसे पुराना तरीका क्या होगा? runtest hooks में कुछ शामिल है?
मेरी चिंता यह नहीं है कि '__exit__' नहीं कहा जा सकता है, लेकिन इसे [सही मान] (http://docs.python.org/2/reference/datamodel) से नहीं बुलाया जाएगा .html # संदर्भ प्रबंधकों)। '__exit__' को आम तौर पर 'साथ' ब्लॉक में उठाए गए किसी भी अपवाद से संबंधित मूल्यों के साथ बुलाया जाता है (या इस मामले में यह परीक्षण निकाय होगा)। – pfctdayelise