पायथन एक मानक doctest मॉड्यूल के साथ आता है जो डॉकस्ट्रिंग की सामग्री का परीक्षण करता है, जिससे डॉकस्ट्रिंग में इनपुट और आउटपुट उदाहरण लिखना आसान हो जाता है और दस्तावेज़ीकरण को समझना आसान हो जाता है।
निम्नलिखित जानकारी यहाँ प्रदान की गई है।
- doctest के साथ परीक्षण का एक सरल उदाहरण
- अगर कोई त्रुटि नहीं है
- अगर कोई त्रुटि है
- विकल्पों और तर्कों द्वारा आउटपुट परिणामों को नियंत्रित करें
-v
विकल्पverbose
तर्क (जैसे समारोह, कार्यक्रम, कार्यक्रम)
- कमांड लाइन से doctest मॉड्यूल चलाएँ
- बाहरी टेक्स्ट फ़ाइल में परीक्षण लिखना
- टेक्स्ट फ़ाइल कैसे लिखें
- py फ़ाइल से कॉल किया गया
- टेक्स्ट फ़ाइल को सीधे निष्पादित करें
doctest के साथ परीक्षण का एक सरल उदाहरण
डॉकस्ट्रिंग निम्नलिखित में से किसी एक में संलग्न एक स्ट्रिंग है: (1) परीक्षण किए जाने वाले फ़ंक्शन का नाम, (2) परीक्षण किए जाने वाले फ़ंक्शन का नाम, और (3) पायथन इंटरेक्टिव मोड में अपेक्षित आउटपुट मान।
"""
''
अगर कोई त्रुटि नहीं है
सुनिश्चित करें कि फ़ंक्शन और डॉकस्ट्रिंग सामग्री में कोड सही है।
def add(a, b):
'''
>>> add(1, 2)
3
>>> add(5, 10)
15
'''
return a + b
if __name__ == '__main__':
import doctest
doctest.testmod()
इस फ़ाइल को चलाएँ।
$ python3 doctest_example.py
यदि कोई त्रुटि नहीं है, तो कुछ भी आउटपुट नहीं होगा।
if __name__ == '__main__'
इसका अर्थ है “बाद की प्रक्रिया को तभी निष्पादित करें जब संबंधित स्क्रिप्ट फ़ाइल को कमांड लाइन से निष्पादित किया जाता है।
अगर कोई त्रुटि है
यदि आप निम्न गलत कोड बनाते और निष्पादित करते हैं, तो एक त्रुटि आउटपुट होगी।
def add(a, b):
'''
>>> add(1, 2)
3
>>> add(5, 10)
10
'''
return a * b
if __name__ == '__main__':
import doctest
doctest.testmod()
$ python3 doctest_example_error.py
**********************************************************************
File "doctest_example_error.py", line 3, in __main__.add
Failed example:
add(1, 2)
Expected:
3
Got:
2
**********************************************************************
File "doctest_example_error.py", line 5, in __main__.add
Failed example:
add(5, 10)
Expected:
10
Got:
50
**********************************************************************
1 items had failures:
2 of 2 in __main__.add
***Test Failed*** 2 failures.
इसे निम्नानुसार दिखाया गया है।
अपेक्षित आउटपुट मान doctest में लिखे गए हैं। | Expected |
वास्तविक आउटपुट मूल्य | Got |
विकल्पों और तर्कों द्वारा आउटपुट परिणामों को नियंत्रित करें
-vविकल्प
यदि आप चाहते हैं कि कोई त्रुटि न होने पर भी आउटपुट परिणाम प्रदर्शित हों, तो कमांड लाइन पर -v विकल्प के साथ कमांड चलाएँ।
$ python3 doctest_example.py -v
Trying:
add(1, 2)
Expecting:
3
ok
Trying:
add(5, 10)
Expecting:
15
ok
1 items had no tests:
__main__
1 items passed all tests:
2 tests in __main__.add
2 tests in 2 items.
2 passed and 0 failed.
Test passed.
verboseतर्क (जैसे समारोह, कार्यक्रम, कार्यक्रम)
यदि आप हमेशा आउटपुट परिणाम प्रदर्शित करना चाहते हैं, तो तर्क निर्दिष्ट करें verbose=True doctest.testmod() में py फ़ाइल में।
if __name__ == '__main__':
import doctest
doctest.testmod(verbose=True)
आउटपुट परिणाम हमेशा रनटाइम पर -v विकल्प के बिना प्रदर्शित किए जाएंगे।
$ python3 doctest_example_verbose.py
Trying:
add(1, 2)
Expecting:
3
ok
Trying:
add(5, 10)
Expecting:
15
ok
1 items had no tests:
__main__
1 items passed all tests:
2 tests in __main__.add
2 tests in 2 items.
2 passed and 0 failed.
Test passed.
कमांड लाइन से doctest मॉड्यूल चलाएँ
if __name__ == '__main__'
यदि आप इसमें कुछ और करना चाहते हैं, तो आप py फ़ाइल में doctest.testmod() को कॉल किए बिना सीधे कमांड लाइन से doctest मॉड्यूल चला सकते हैं।
उदाहरण के लिए, निम्नलिखित मामलों में
def add(a, b):
'''
>>> add(1, 2)
3
>>> add(5, 10)
15
'''
return a + b
if __name__ == '__main__':
import sys
result = add(int(sys.argv[1]), int(sys.argv[2]))
print(result)
यह कमांड लाइन तर्क प्राप्त कर सकता है और हमेशा की तरह प्रक्रिया को निष्पादित कर सकता है।
$ python3 doctest_example_without_import.py 3 4
7
यदि आप -m विकल्प के साथ स्क्रिप्ट के रूप में doctest चलाते हैं, तो परीक्षण उस फ़ंक्शन के विरुद्ध चलाया जाएगा जिसमें doctest लिखा गया है। यदि आप आउटपुट परिणाम प्रदर्शित करना चाहते हैं, तो -v पहले की तरह जोड़ें।
$ python3 -m doctest doctest_example_without_import.py
$ python3 -m doctest -v doctest_example_without_import.py
Trying:
add(1, 2)
Expecting:
3
ok
Trying:
add(5, 10)
Expecting:
15
ok
1 items had no tests:
doctest_example_without_import
1 items passed all tests:
2 tests in doctest_example_without_import.add
2 tests in 2 items.
2 passed and 0 failed.
Test passed.
बाहरी टेक्स्ट फ़ाइल में परीक्षण लिखना
आप परीक्षण कोड को डॉकस्ट्रिंग के बजाय बाहरी टेक्स्ट फ़ाइल में भी लिख सकते हैं।
टेक्स्ट फ़ाइल कैसे लिखें
डॉकस्ट्रिंग में वर्णित अनुसार पायथन इंटरेक्टिव मोड प्रारूप में लिखें। उपयोग किए जाने वाले कार्यों को आयात करना आवश्यक है।
यदि आप टेक्स्ट फ़ाइल को उसी निर्देशिका में रखना चाहते हैं जिसमें परीक्षण की जाने वाली .py फ़ाइल है, तो बस इसे निम्नानुसार आयात करें।
>>> from doctest_example import add
>>> add(1, 2)
3
>>> add(5, 10)
15
py फ़ाइल से कॉल किया गया
परीक्षण के लिए किसी अन्य .py फ़ाइल में doctest.testfile() को कॉल करें।
टेक्स्ट फ़ाइल का पथ निर्दिष्ट करें जहां परीक्षण कोड doctest.testfile() के तर्क के रूप में लिखा गया है।
import doctest
doctest.testfile('doctest_text.txt')
इस py फ़ाइल को चलाएँ।
$ python3 doctest_example_testfile.py -v
Trying:
from doctest_example import add
Expecting nothing
ok
Trying:
add(1, 2)
Expecting:
3
ok
Trying:
add(5, 10)
Expecting:
15
ok
1 items passed all tests:
3 tests in doctest_text.txt
3 tests in 1 items.
3 passed and 0 failed.
Test passed.
टेक्स्ट फ़ाइल को सीधे निष्पादित करें
यहां तक कि अगर आपके पास py फ़ाइल नहीं है, तो आप सीधे कमांड लाइन से टेक्स्ट फ़ाइल पढ़ सकते हैं और परीक्षण चला सकते हैं।
स्क्रिप्ट के रूप में doctest चलाने के लिए -m विकल्प के साथ पायथन कमांड चलाएँ। आप टेक्स्ट फ़ाइल पथ को कमांड लाइन तर्क के रूप में निर्दिष्ट कर सकते हैं।
$ python3 -m doctest -v doctest_text.txt
Trying:
from doctest_example import add
Expecting nothing
ok
Trying:
add(1, 2)
Expecting:
3
ok
Trying:
add(5, 10)
Expecting:
15
ok
1 items passed all tests:
3 tests in doctest_text.txt
3 tests in 1 items.
3 passed and 0 failed.
Test passed.