"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पैरामीटरयुक्त इकाई परीक्षण पायथन परीक्षण पीढ़ी को कैसे सुव्यवस्थित कर सकता है?

पैरामीटरयुक्त इकाई परीक्षण पायथन परीक्षण पीढ़ी को कैसे सुव्यवस्थित कर सकता है?

2024-12-23 को प्रकाशित
ब्राउज़ करें:969

How Can Parameterized Unit Testing Streamline Python Test Generation?

पायथन में पैरामीटरयुक्त इकाई परीक्षण: गतिशील परीक्षण पीढ़ी के लिए एक मार्गदर्शिका

सॉफ्टवेयर विकास में, परीक्षण विश्वसनीयता सुनिश्चित करने में महत्वपूर्ण भूमिका निभाता है और हमारे कोड की सटीकता। यूनिट परीक्षण में, विशेष रूप से, विशिष्ट कार्यों या मॉड्यूल के लिए व्यक्तिगत परीक्षण बनाना शामिल है। हालाँकि, जब बड़े डेटासेट या जटिल परीक्षण परिदृश्यों से निपटते हैं, तो प्रत्येक पैरामीटर के लिए मैन्युअल रूप से परीक्षण लिखना श्रमसाध्य हो जाता है।

पैरामीटरीकृत परीक्षण: गतिशील परीक्षण पीढ़ी के लिए एक समाधान

पैरामीटरयुक्त परीक्षण, जिसे पैरामीटरयुक्त इकाई परीक्षण के रूप में भी जाना जाता है, इनपुट मापदंडों के आधार पर परीक्षण निर्माण की प्रक्रिया को स्वचालित करके इस चुनौती का समाधान करता है। यह हमें रनटाइम पर गतिशील रूप से प्रतिस्थापित किए गए परीक्षण मापदंडों के साथ, डेटा के कई सेटों में एक ही परीक्षण निष्पादित करने की अनुमति देता है। पैरामीट्रिजेशन के लिए उपकरण और पुस्तकालय। इनमें शामिल हैं:

1. पाइटेस्ट का डेकोरेटर:

पाइटेस्ट एक सुविधाजनक डेकोरेटर @pytest.mark.parametrize प्रदान करता है जो पैरामीट्रिजेशन को सरल बनाता है। यह हमें परीक्षण मापदंडों वाले टुपल्स की एक सूची पास करने में सक्षम बनाता है, और डेकोरेटर मूल्यों के प्रत्येक सेट के लिए परीक्षण का विस्तार करता है।

उदाहरण:

import pytest @pytest.mark.parametrize("नाम, ए, बी", [ ("फू", "ए", "ए"), ("बार", "ए", "बी"), ("ली", "बी", "बी"), ]) डीईएफ़ परीक्षण_अनुक्रम(नाम, ए, बी): a == b

2 पर जोर दें। पैरामीटरयुक्त लाइब्रेरी:

पैरामीटरीकृत लाइब्रेरी पैरामीट्रिजेशन के लिए एक वैकल्पिक दृष्टिकोण प्रदान करती है। यह हमें सूचियों या जेनरेटर के रूप में परीक्षण पैरामीटर निर्दिष्ट करने के लिए डेकोरेटर @parameterized.expand का उपयोग करने की अनुमति देता है।
import pytest

@pytest.mark.parametrize("name, a, b", [
    ("foo", "a", "a"),
    ("bar", "a", "b"),
    ("lee", "b", "b"),
])
def test_sequence(name, a, b):
    assert a == b
उदाहरण:

पैरामीटरयुक्त आयात पैरामीटरयुक्त से क्लास टेस्टसीक्वेंस(unittest.TestCase): @parameterized.expand([ ("फू", "ए", "ए"), ("बार", "ए", "बी"), ("ली", "बी", "बी"), ]) डीईएफ़ परीक्षण_अनुक्रम(स्वयं, नाम, ए, बी): self.assertEqual(a, b)

पैरामीटरीकृत परीक्षण के लाभ:

import pytest

@pytest.mark.parametrize("name, a, b", [
    ("foo", "a", "a"),
    ("bar", "a", "b"),
    ("lee", "b", "b"),
])
def test_sequence(name, a, b):
    assert a == b

परीक्षण प्रयासों में कमी: अलग लिखने की आवश्यकता को समाप्त करता है प्रत्येक पैरामीटर संयोजन के लिए परीक्षण, समय और प्रयास की बचत।

    बेहतर परीक्षण कवरेज:
  • सभी संभावित पैरामीटर मानों का परीक्षण करके, यह व्यापक परीक्षण कवरेज सुनिश्चित करता है और लापता किनारे के मामलों के जोखिम को कम करता है।
  • डेटा-संचालित परीक्षण:
  • जटिल परिदृश्यों के परीक्षण की सुविधा प्रदान करता है जहां डेटा ही परीक्षण व्यवहार को संचालित करता है।
  • कुशल और स्केलेबल:
  • स्वचालित परीक्षण पीढ़ी प्रक्रिया परीक्षण को अधिक कुशल बनाती है और स्केलेबल, विशेष रूप से बड़े डेटासेट के लिए। :उदाहरण:
  • आयात यूनिटटेस्ट एल = [["फू", "ए", "ए",], ["बार", "ए", "बी"], ["ली", "बी", &quot ;बी"]] वर्ग TestSequence(unittest.TestCase): उत्तीर्ण डीईएफ़ test_generator(ए, ​​बी): डीईएफ़ परीक्षण (स्वयं): self.assertEqual(ए,बी) वापसी परीक्षण यदि __नाम__ == '__मुख्य__': एल में टी के लिए: test_name = 'test_%s' % t[0] परीक्षण = test_generator(t[1], t[2]) setattr(TestSequence, test_name, test) Unittest.main()अधिक कुशल और उपयोगकर्ता के अनुकूल पैरामीट्रिजेशन टूल की उपलब्धता के कारण आधुनिक पायथन विकास में यह विरासत दृष्टिकोण कम आम है।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3