Erlang 21

ct_hooks




erlang

ct_hooks

मॉड्यूल

ct_hooks

मॉड्यूल सारांश

कॉमन टेस्ट के शीर्ष पर कॉलबैक इंटरफ़ेस।

विवरण

कॉमन टेस्ट हुक (CTH) फ्रेमवर्क सभी टेस्ट सूट कॉल के पहले और बाद में कॉलबैक द्वारा Common Test के डिफ़ॉल्ट व्यवहार के विस्तार की अनुमति देता है। यह Common Test उन्नत उपयोगकर्ताओं के लिए अभिप्रेत है, जो ऐसे व्यवहार को अमूर्त करना चाहते हैं जो कई टेस्ट सूट के लिए आम है।

संक्षेप में, CTH आपको इसकी अनुमति देता है:

  • प्रत्येक सुइट कॉन्फ़िगरेशन कॉल से पहले रनटाइम कॉन्फ़िगरेशन में हेरफेर करें।

  • सभी सुइट कॉन्फ़िगरेशन कॉल की वापसी में हेरफेर करें और परीक्षण के परिणाम को स्वयं विस्तार दें।

निम्नलिखित अनुभाग अनिवार्य और वैकल्पिक CTH फ़ंक्शन का वर्णन करते हैं जो परीक्षण निष्पादन के दौरान Common Test कॉल करते हैं। अधिक जानकारी के लिए, उपयोगकर्ता की मार्गदर्शिका में सेक्शन Common Test Hooks देखें।

अपने सुइट में CTH जोड़ने के तरीके के बारे में जानकारी के लिए, उपयोगकर्ता गाइड में Installing a CTH अनुभाग देखें।

ध्यान दें

CTH के एक न्यूनतम उदाहरण के लिए, उपयोगकर्ता के गाइड में अनुभाग Example CTH देखें।

कॉलबैक कार्य

निम्नलिखित फ़ंक्शन एक CTH के लिए कॉलबैक इंटरफ़ेस को परिभाषित करते हैं।

निर्यात

मॉड्यूल: init (Id, Opts) -> {ठीक है, राज्य} | {ठीक है, राज्य, प्राथमिकता}

प्रकार

अनिवार्य

इस फ़ंक्शन को हमेशा किसी अन्य कॉलबैक फ़ंक्शन से पहले कहा जाता है। किसी भी सामान्य स्थिति को आरंभ करने के लिए इसका उपयोग करें। इस CTH के लिए एक राज्य वापस करना है।

Id या तो ct_hooks:id/1 का रिटर्न मान है ct_hooks:id/1 , या एक reference ( erlang:make_ref/0 का उपयोग करके erlang:make_ref/0 ct_hooks:id/1 में erlang:make_ref/0 ) यदि ct_hooks:id/1 लागू नहीं किया गया है।

Priority इस हुक की सापेक्ष प्राथमिकता है। कम प्राथमिकता वाले हुक पहले निष्पादित किए जाते हैं। यदि कोई प्राथमिकता निर्दिष्ट नहीं है, तो यह 0 सेट है।

जब init कहा जाता है, तो विवरण के लिए, उपयोगकर्ता के गाइड में अनुभाग CTH Scope देखें।

मॉड्यूल: pre_init_per_suite (सुइटनाम, InitData, CTHState) -> परिणाम

प्रकार

वैकल्पिक

यह फ़ंक्शन init_per_suite से पहले कहा जाता है यदि यह मौजूद है। इसमें आमतौर पर इनिशियलाइज़ेशन / लॉगिंग शामिल init_per_suite है जिसे init_per_suite कहा जाता है। अगर {skip,Reason} या {fail,Reason} लौटाया जाता है, तो init_per_suite और सूट के सभी परीक्षण मामलों को छोड़ दिया जाता है और Reason सूट के ओवरव्यू लॉग में मुद्रित होता है।

SuiteName को चलाया जाने वाला सुइट का नाम है।

InitData परीक्षण सूट की मूल कॉन्फ़िगरेशन सूची या एक SkipOrFail tuple है यदि पिछले CTH ने इसे वापस कर दिया है।

CTHState CTH की वर्तमान आंतरिक स्थिति है।

Return init_per_suite फ़ंक्शन का परिणाम है। यदि यह {skip,Reason} या {fail,Reason} , तो init_per_suite को कभी भी कॉल नहीं किया जाता है, इसके बजाय दीक्षा को क्रमशः स्किप या फेल माना जाता है। यदि कोई NewConfig सूची वापस आ जाती है, init_per_suite को उस NewConfig सूची के साथ बुलाया जाता है। अधिक जानकारी के लिए, उपयोगकर्ता के गाइड में अनुभाग Pre Hooks देखें।

यह फ़ंक्शन केवल तभी कहा जाता है जब init_per_suite is run से पहले CTH जोड़ा init_per_suite is run । विवरण के लिए, उपयोगकर्ता के गाइड में अनुभाग CTH Scope देखें।

मॉड्यूल: post_init_per_suite (सुइटनाम, कॉन्फ़िगरेशन, रिटर्न, CTHState) -> परिणाम

प्रकार

वैकल्पिक

इस फ़ंक्शन को init_per_suite बाद कहा जाता है यदि यह मौजूद है। आम तौर पर यह सुनिश्चित करने के लिए अतिरिक्त जांच शामिल है कि सभी सही निर्भरताएं सही ढंग से शुरू की गई हैं।

Return वही है जो init_per_suite लौटा है, जो है, {fail,Reason} , {skip,Reason} , एक init_per_suite लिस्ट, या एक शब्द जो यह init_per_suite कि init_per_suite कैसे विफल हुआ।

NewReturn संभवतः NewReturn का संशोधित संशोधित मूल्य है। init_per_suite में एक विफलता से उबरने के लिए, ConfigList को tc_status तत्व को हटा दें। अधिक जानकारी के लिए, उपयोगकर्ता के गाइड में "मैनीपुलेटिंग टेस्ट" अनुभाग में Post Hooks देखें।

CTHState CTH की वर्तमान आंतरिक स्थिति है।

यह फ़ंक्शन केवल तभी कहा जाता है जब CTH को init_per_suite से पहले या जोड़ा init_per_suite । विवरण के लिए, उपयोगकर्ता के गाइड में अनुभाग CTH Scope देखें।

मॉड्यूल: प्री_इनिट_पर_ग्रुप (सूटनेम, ग्रुपनेम, इनिटडाटा, CTHState) -> परिणाम

प्रकार

वैकल्पिक

यह फ़ंक्शन init_per_group से पहले कहा जाता है यदि यह मौजूद है। यह उसी तरह व्यवहार करता है जैसे कि pre_init_per_suite , लेकिन इसके बजाय फ़ंक्शन init_per_group लिए।

यदि Module:pre_init_per_group/4 निर्यात नहीं किया जाता है Module:pre_init_per_group(GroupName, InitData, CTHState) इसके बजाय Module:pre_init_per_group(GroupName, InitData, CTHState) को कॉल करने का प्रयास करेगा। यह पश्चगामी अनुकूलता के लिए है।

मॉड्यूल: post_init_per_group (SuiteName, GroupName, config, Return, CTHState) -> परिणाम

प्रकार

वैकल्पिक

इस फ़ंक्शन को init_per_group बाद कहा जाता है यदि यह मौजूद है। यह उसी तरह व्यवहार करता है जैसे post_init_per_suite , लेकिन इसके बजाय फ़ंक्शन init_per_group लिए।

यदि Module:post_init_per_group/5 निर्यात नहीं किया जाता है Module:post_init_per_group(GroupName, Config, Return, CTHState) इसके बजाय Module:post_init_per_group(GroupName, Config, Return, CTHState) को कॉल करने का प्रयास करेगा। यह पश्चगामी अनुकूलता के लिए है।

मॉड्यूल: pre_init_per_testcase (SuiteName, TestcaseName, InitData, CTHState) -> परिणाम

प्रकार

वैकल्पिक

यह फ़ंक्शन init_per_testcase से पहले कहा जाता है यदि यह मौजूद है। यह उसी तरह व्यवहार करता है जैसे कि pre_init_per_suite , लेकिन इसके बजाय फ़ंक्शन init_per_testcase लिए।

यदि Module:pre_init_per_testcase/4 को निर्यात नहीं किया जाता है, तो Module:pre_init_per_testcase(TestcaseName, InitData, CTHState) को कॉल करने का प्रयास करेगा Module:pre_init_per_testcase(TestcaseName, InitData, CTHState) इसके बजाय Module:pre_init_per_testcase(TestcaseName, InitData, CTHState) । यह पश्चगामी अनुकूलता के लिए है।

CTH को अभी यहां नहीं जोड़ा जा सकता है। उस सुविधा को बाद के रिलीज़ में जोड़ा जा सकता है, लेकिन यह अभी बैकवर्ड संगतता को तोड़ देगा।

मॉड्यूल: post_init_per_testcase (SuiteName, TestcaseName, config, Return, CTHState) -> परिणाम

प्रकार

वैकल्पिक

यह फ़ंक्शन init_per_testcase बाद कहा जाता है यदि यह मौजूद है। यह उसी तरह व्यवहार करता है जैसे post_init_per_suite , लेकिन इसके बजाय फ़ंक्शन init_per_testcase लिए।

यदि Module:post_init_per_testcase/5 को निर्यात नहीं किया जाता है, तो Module:post_init_per_testcase(TestcaseName, Config, Return, CTHState) को कॉल करने का प्रयास करेगा Module:post_init_per_testcase(TestcaseName, Config, Return, CTHState) इसके बजाय Module:post_init_per_testcase(TestcaseName, Config, Return, CTHState) । यह पश्चगामी अनुकूलता के लिए है।

मॉड्यूल: pre_end_per_testcase (SuiteName, TestcaseName, EndData, CTHState) -> परिणाम

प्रकार

वैकल्पिक

यदि यह मौजूद है, तो इस फ़ंक्शन को end_per_testcase से पहले कहा जाता है। यह उसी तरह व्यवहार करता है जैसे कि pre_end_per_suite , लेकिन इसके बजाय फ़ंक्शन end_per_testcase लिए।

यह फ़ंक्शन स्किप या end_per_testcase/2 को वापस करके परीक्षण के मामले के परिणाम को बदल नहीं सकता है, लेकिन यह Config में आइटम सम्मिलित कर सकता है जो end_per_testcase/2 या post_end_per_testcase/5 में पढ़ा जा सकता है।

यदि Module:pre_end_per_testcase/4 का निर्यात नहीं किया जाता है Module:pre_end_per_testcase(TestcaseName, EndData, CTHState) इसके बजाय Module:pre_end_per_testcase(TestcaseName, EndData, CTHState) को कॉल करने का प्रयास करेगा। यह पश्चगामी अनुकूलता के लिए है।

मॉड्यूल: post_end_per_testcase (SuiteName, TestcaseName, config, Return, CTHState) -> परिणाम

प्रकार

वैकल्पिक

यह फ़ंक्शन end_per_testcase बाद कहा जाता है यदि यह मौजूद है। यह उसी तरह व्यवहार करता है जैसे post_end_per_suite , लेकिन इसके बजाय फ़ंक्शन end_per_testcase लिए।

यदि Module:post_end_per_testcase/5 को निर्यात नहीं किया जाता है Module:post_end_per_testcase(TestcaseName, Config, Return, CTHState) इसके बजाय Module:post_end_per_testcase(TestcaseName, Config, Return, CTHState) को कॉल करने का प्रयास करेगा। यह पश्चगामी अनुकूलता के लिए है।

मॉड्यूल: pre_end_per_group (SuiteName, GroupName, EndData, CTHState)> परिणाम

प्रकार

वैकल्पिक

यह फ़ंक्शन मौजूद होने से पहले end_per_group कहा जाता है। यह उसी तरह व्यवहार करता है जैसे कि pre_init_per_suite , लेकिन इसके बजाय फ़ंक्शन end_per_group लिए।

यदि Module:pre_end_per_group/4 निर्यात नहीं किया गया है Module:pre_end_per_group(GroupName, EndData, CTHState) इसके बजाय Module:pre_end_per_group(GroupName, EndData, CTHState) को कॉल करने का प्रयास करेगा। यह पश्चगामी अनुकूलता के लिए है।

मॉड्यूल: post_end_per_group (SuiteName, GroupName, config, Return, CTHState)> परिणाम

प्रकार

वैकल्पिक

यदि यह मौजूद है तो यह फ़ंक्शन end_per_group बाद कहा जाता है। यह उसी तरह व्यवहार करता है जैसे post_init_per_suite , लेकिन इसके बजाय फ़ंक्शन end_per_group लिए।

यदि Module:post_end_per_group/5 निर्यात नहीं किया जाता है Module:post_end_per_group(GroupName, Config, Return, CTHState) इसके बजाय Module:post_end_per_group(GroupName, Config, Return, CTHState) को कॉल करने का प्रयास करेगा। यह पश्चगामी अनुकूलता के लिए है।

मॉड्यूल: pre_end_per_suite (SuiteName, EndData, CTHState) -> परिणाम

प्रकार

वैकल्पिक

यह फ़ंक्शन मौजूद होने से पहले end_per_suite कहलाता है। यह उसी तरह व्यवहार करता है जैसे कि pre_init_per_suite , लेकिन इसके बजाय फ़ंक्शन end_per_suite लिए।

मॉड्यूल: post_end_per_suite (SuiteName, config, Return, CTHState) -> परिणाम

प्रकार

वैकल्पिक

यदि यह मौजूद है, तो यह फ़ंक्शन end_per_suite बाद कहा जाता है। यह उसी तरह व्यवहार करता है जैसे post_init_per_suite , लेकिन इसके बजाय फ़ंक्शन end_per_suite लिए।

मॉड्यूल: on_tc_fail (SuiteName, TestName, कारण, CTHState) -> नया नाम

प्रकार

वैकल्पिक

जब भी कोई टेस्ट केस (या कॉन्फ़िगरेशन फ़ंक्शन) विफल होता है, तो इस फ़ंक्शन को कहा जाता है। असफल परीक्षण मामले के लिए पोस्ट फ़ंक्शन को कॉल करने के बाद इसे कहा जाता है, अर्थात:

  • यदि init_per_suite विफल रहता है, तो यह फ़ंक्शन post_init_per_suite बाद कहा जाता है।

  • यदि कोई परीक्षण मामला विफल हो जाता है, तो यह post_end_per_testcase बाद कहा जाता है।

यदि असफल परीक्षण का मामला एक परीक्षण केस समूह का है, तो पहला तर्क एक टपल {FuncName,GroupName} , अन्यथा केवल फ़ंक्शन नाम।

Reason साथ आने वाला डेटा इवेंट tc_done में FailReason के समान प्रारूप का अनुसरण करता है। विवरण के लिए, उपयोगकर्ता के गाइड में अनुभाग Event Handling देखें।

यदि Module:on_tc_fail/4 निर्यात नहीं किया जाता है Module:on_tc_fail(TestName, Reason, CTHState) इसके बजाय Module:on_tc_fail(TestName, Reason, CTHState) को कॉल करने का प्रयास करेगा। यह पश्चगामी अनुकूलता के लिए है।

मॉड्यूल: on_tc_skip (SuiteName, TestName, कारण, CTHState) -> नया नाम

प्रकार

वैकल्पिक

जब भी कोई टेस्ट केस (या कॉन्फ़िगरेशन फ़ंक्शन) छोड़ दिया जाता है, तो इस फ़ंक्शन को कहा जाता है। यह पोस्ट समारोह को छोड़ दिया जाता है, जिसे स्केप्ड टेस्ट केस के लिए बुलाया जाता है, जो कि है:

  • यदि init_per_group को छोड़ दिया जाता है, तो इस फ़ंक्शन को post_init_per_group बाद कहा जाता है।

  • यदि कोई परीक्षण मामला छोड़ दिया जाता है, तो इस फ़ंक्शन को post_end_per_testcase बाद कहा जाता है।

यदि छोड़ दिया गया परीक्षण मामला किसी परीक्षण केस समूह का है, तो पहला तर्क टपल {FuncName,GroupName} , अन्यथा केवल फ़ंक्शन नाम।

Reason साथ आने वाला डेटा ईवेंट tc_auto_skip और tc_user_skip के समान प्रारूप का अनुसरण करता है विवरण के लिए, उपयोगकर्ता के गाइड में अनुभाग Event Handling देखें।

यदि Module:on_tc_skip/4 निर्यात नहीं किया जाता है Module:on_tc_skip(TestName, Reason, CTHState) इसके बजाय Module:on_tc_skip(TestName, Reason, CTHState) को कॉल करने का प्रयास करेगा। यह पश्चगामी अनुकूलता के लिए है।

मॉड्यूल: समाप्त (CTHState)

प्रकार

वैकल्पिक

यह फ़ंक्शन CTH scope के अंत में कहा जाता scope

मॉड्यूल: आईडी (ऑप्स) -> आईडी

प्रकार

वैकल्पिक

Id विशिष्ट रूप से एक CTH उदाहरण की पहचान करती है। यदि दो CTH समान Id वापस करते हैं, तो दूसरे CTH को अनदेखा कर दिया जाता है और बाद में CTH पर कॉल केवल पहली बार की जाती है। विवरण के लिए, उपयोगकर्ता के मार्गदर्शिका में अनुभाग Installing a CTH देखें।

इस फ़ंक्शन का कोई दुष्प्रभाव नहीं है, क्योंकि इसे Common Test द्वारा कई बार कहा जा सकता है।

यदि कार्यान्वित नहीं किया गया है, तो CTH इस फ़ंक्शन के रूप में कार्य करता है जैसे कि make_ref/0 कॉल लौटाया जाता है।