स्वर्ण परीक्षण

टीएफएफ में 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 के साथ चलाकर अद्यतन किया जा सकता है। अप्रत्याशित परिवर्तनों के लिए परिणामी अंतर की जाँच की जानी चाहिए।