Python मा docstrings मा परीक्षण कोड लेख्न कसरी doctest लेख्ने र प्रयोग गर्ने।

व्यापार

पाइथन एक मानक doctest मोड्युलको साथ आउँछ जसले docstring को सामग्रीहरूको परीक्षण गर्दछ, docstring मा इनपुट र आउटपुट उदाहरणहरू लेख्न सजिलो बनाउँछ र कागजात बुझ्न सजिलो बनाउँछ।

निम्न जानकारी यहाँ प्रदान गरिएको छ।

  • doctest संग परीक्षण को एक सरल उदाहरण
    • यदि त्यहाँ कुनै त्रुटि छैन
    • यदि त्यहाँ त्रुटि छ
  • विकल्प र तर्कहरू द्वारा आउटपुट परिणामहरू नियन्त्रण गर्नुहोस्
    • -vविकल्प
    • verboseतर्क (जस्तै प्रकार्य, कार्यक्रम, कार्यक्रम)
  • आदेश रेखाबाट doctest मोड्युल चलाउनुहोस्
  • बाह्य पाठ फाइलमा परीक्षण लेखन
    • पाठ फाइल कसरी लेख्ने
    • py फाइल बाट कल गरियो
    • सीधा पाठ फाइल कार्यान्वयन

doctest संग परीक्षण को एक सरल उदाहरण

डकस्ट्रिङ निम्न मध्ये एउटामा संलग्न स्ट्रिङ हो: (१) परीक्षण गरिने प्रकार्यको नाम, (२) परीक्षण गरिने प्रकार्यको नाम, र (३) पाइथन अन्तरक्रियात्मक मोडमा अपेक्षित आउटपुट मान।

  • """
  • ''

यदि त्यहाँ कुनै त्रुटि छैन

निश्चित गर्नुहोस् कि कोड प्रकार्य र docstring सामग्रीमा सही छ।

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तर्क (जस्तै प्रकार्य, कार्यक्रम, कार्यक्रम)

यदि तपाइँ सधैं आउटपुट परिणामहरू प्रदर्शन गर्न चाहनुहुन्छ भने, py फाइलमा तर्क verbose=True in doctest.testmod() निर्दिष्ट गर्नुहोस्।

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 चलाउनुहुन्छ भने, परीक्षण डक्टेस्ट लेखिएको प्रकार्य विरुद्ध चलाइनेछ। यदि तपाइँ आउटपुट परिणामहरू प्रदर्शन गर्न चाहनुहुन्छ भने, पहिले जस्तै -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.

बाह्य पाठ फाइलमा परीक्षण लेखन

तपाईले डकस्ट्रिङको सट्टा बाह्य पाठ फाइलमा परीक्षण कोड पनि लेख्न सक्नुहुन्छ।

पाठ फाइल कसरी लेख्ने

पाइथन अन्तरक्रियात्मक मोड ढाँचामा लेख्नुहोस्, जस्तै docstring मा वर्णन गरिएको छ। प्रयोग गर्नका लागि कार्यहरू आयात गर्न आवश्यक छ।

यदि तपाइँ पाठ फाइललाई .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.
Copied title and URL