பைத்தானில் டாக்ஸ்ட்ரிங்கில் சோதனைக் குறியீட்டை எழுதுவதற்கு doctest ஐ எவ்வாறு எழுதுவது மற்றும் பயன்படுத்துவது.

வணிக

பைதான் ஒரு நிலையான டாக்டெஸ்ட் தொகுதியுடன் வருகிறது, இது ஒரு டாக்ஸ்ட்ரிங் உள்ளடக்கங்களைச் சோதிக்கிறது, இது டாக்ஸ்ட்ரிங்கில் உள்ளீடு மற்றும் வெளியீட்டு எடுத்துக்காட்டுகளை எழுதுவதை எளிதாக்குகிறது மற்றும் ஆவணங்களை எளிதாகப் புரிந்துகொள்ள உதவுகிறது.

பின்வரும் தகவல்கள் இங்கே கொடுக்கப்பட்டுள்ளன.

  • டாக்டெஸ்டுடன் சோதனை செய்வதற்கான எளிய எடுத்துக்காட்டு
    • பிழை இல்லை என்றால்
    • பிழை இருந்தால்
  • விருப்பங்கள் மற்றும் வாதங்கள் மூலம் வெளியீட்டு முடிவுகளைக் கட்டுப்படுத்தவும்
    • -vவிருப்பம்
    • verboseவாதம் (எ.கா. செயல்பாடு, நிரல், நிரல்)
  • கட்டளை வரியில் இருந்து doctest தொகுதியை இயக்கவும்
  • வெளிப்புற உரை கோப்பில் சோதனைகளை எழுதுதல்
    • உரை கோப்பை எழுதுவது எப்படி
    • py கோப்பிலிருந்து அழைக்கப்பட்டது
    • உரை கோப்பை நேரடியாக இயக்கவும்

டாக்டெஸ்டுடன் சோதனை செய்வதற்கான எளிய எடுத்துக்காட்டு

டாக்ஸ்ட்ரிங் என்பது பின்வருவனவற்றில் ஒன்றில் இணைக்கப்பட்ட ஒரு சரம்: (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.

இது பின்வருமாறு காட்டப்பட்டுள்ளது.

டாக்டெஸ்டில் எழுதப்பட்ட எதிர்பார்க்கப்படும் வெளியீட்டு மதிப்புகள்.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 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 ஐ ஸ்கிரிப்டாக இயக்கினால், 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')

இந்த பை கோப்பை இயக்கவும்.

$ 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.