टीएफएफ में golden
नामक एक छोटी लाइब्रेरी शामिल है जो गोल्डन टेस्ट लिखना और बनाए रखना आसान बनाती है।
स्वर्णिम परीक्षण क्या हैं? मुझे उनका उपयोग कब करना चाहिए?
गोल्डन टेस्ट का उपयोग तब किया जाता है जब आप चाहते हैं कि डेवलपर को पता चले कि उनके कोड ने किसी फ़ंक्शन के आउटपुट को बदल दिया है। वे अच्छे इकाई परीक्षणों की कई विशेषताओं का उल्लंघन करते हैं, जिसमें वे स्पष्ट, प्रलेखित गुणों के एक विशिष्ट सेट का परीक्षण करने के बजाय कार्यों के सटीक आउटपुट के बारे में वादे करते हैं। यह कभी-कभी स्पष्ट नहीं होता है कि गोल्डन आउटपुट में परिवर्तन कब "अपेक्षित" है या क्या यह किसी संपत्ति का उल्लंघन कर रहा है जिसे गोल्डन टेस्ट लागू करना चाहता है। इस प्रकार, एक सुव्यवस्थित इकाई परीक्षण आमतौर पर सुनहरे परीक्षण से बेहतर होता है।
हालाँकि, त्रुटि संदेशों, निदान या उत्पन्न कोड की सटीक सामग्री को मान्य करने के लिए गोल्डन परीक्षण बेहद उपयोगी हो सकते हैं। इन मामलों में, गोल्डन परीक्षण एक सहायक आत्मविश्वास जांच हो सकता है कि उत्पन्न आउटपुट में कोई भी परिवर्तन "सही दिखता है।"
मुझे golden
उपयोग करके परीक्षण कैसे लिखना चाहिए?
golden.check_string(filename, value)
golden
लाइब्रेरी में प्राथमिक प्रवेश बिंदु है। यह उस फ़ाइल की सामग्री के विरुद्ध value
स्ट्रिंग की जाँच करेगा जिसका अंतिम पथ तत्व filename
है। filename
का पूरा पथ एक कमांडलाइन --golden <path_to_file>
तर्क के माध्यम से प्रदान किया जाना चाहिए। इसी प्रकार, इन फ़ाइलों को py_test
BUILD नियम के data
तर्क का उपयोग करके परीक्षणों के लिए उपलब्ध कराया जाना चाहिए। सही उचित सापेक्ष पथ उत्पन्न करने के लिए location
फ़ंक्शन का उपयोग करें:
py_string_test(
...
args = [
"--golden",
"$(location path/to/first_test_output.expected)",
...
"--golden",
"$(location path/to/last_test_output.expected)",
],
data = [
"path/to/first_test_output.expected",
...
"path/to/last_test_output.expected",
],
...
)
परंपरा के अनुसार, गोल्डन फ़ाइलों को उनके परीक्षण लक्ष्य के समान नाम के साथ एक सहोदर निर्देशिका में रखा जाना चाहिए, जिसके साथ _goldens
जोड़ा गया हो:
path/
to/
some_test.py
some_test_goldens/
test_case_one.expected
...
test_case_last.expected
मैं .expected
फ़ाइलें कैसे अद्यतन करूं?
.expected
फ़ाइलों को प्रभावित परीक्षण लक्ष्य को तर्कों --test_arg=--update_goldens --test_strategy=local
के साथ चलाकर अद्यतन किया जा सकता है। अप्रत्याशित परिवर्तनों के लिए परिणामी अंतर की जाँच की जानी चाहिए।