Python သည် docstring တစ်ခု၏ အကြောင်းအရာများကို စမ်းသပ်သည့် စံ doctest module တစ်ခု ပါ၀င်ပြီး docstring တွင် input နှင့် output နမူနာများကို ရေးရန် လွယ်ကူစေပြီး documentation ကို နားလည်ရန် ပိုမိုလွယ်ကူစေသည်။
အောက်ပါအချက်အလက်များကို ဤနေရာတွင် ဖော်ပြပေးထားပါသည်။
- doctest ဖြင့်စမ်းသပ်ခြင်း၏ရိုးရှင်းသောဥပမာ - အမှားအယွင်းမရှိလျှင်
- အမှားအယွင်းရှိလျှင်
 
- ရွေးချယ်မှုများနှင့် အကြောင်းပြချက်များဖြင့် အထွက်ရလဒ်များကို ထိန်းချုပ်ပါ။ - -vရွေးချယ်မှု
- verboseအကြောင်းပြချက် (ဥပမာ၊ လုပ်ဆောင်ချက်၊ ပရိုဂရမ်၊ ပရိုဂရမ်)
 
- command line မှ doctest module ကိုဖွင့်ပါ။
- ပြင်ပစာသားဖိုင်တွင် စမ်းသပ်မှုများ ရေးသားခြင်း။ - စာသားဖိုင်ကိုဘယ်လိုရေးရမလဲ
- py ဖိုင်မှ ခေါ်သည်။
- စာသားဖိုင်ကို တိုက်ရိုက်လုပ်ဆောင်ပါ။
 
doctest ဖြင့်စမ်းသပ်ခြင်း၏ရိုးရှင်းသောဥပမာ
docstring သည် အောက်ပါအရာများထဲမှ တစ်ခုတွင် အကျုံးဝင်သည့် စာကြောင်းတစ်ခုဖြစ်သည်- (1) စမ်းသပ်ရမည့် လုပ်ဆောင်ချက်အမည်၊ (2) စမ်းသပ်ရမည့် လုပ်ဆောင်ချက်အမည် နှင့် (3) Python အပြန်အလှန်တုံ့ပြန်မှုမုဒ်တွင် မျှော်လင့်ထားသော အထွက်တန်ဖိုး။
- """
- ''
အမှားအယွင်းမရှိလျှင်
လုပ်ဆောင်ချက်နှင့် 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__'၎င်းသည် “ သက်ဆိုင်ရာ script ဖိုင်ကို command line မှလုပ်ဆောင်သောအခါမှသာ နောက်ဆက်တွဲလုပ်ဆောင်မှုကို လုပ်ဆောင်သည်ဟု ဆိုလိုသည်။
အမှားအယွင်းရှိလျှင်
အောက်ဖော်ပြပါ မှားယွင်းသောကုဒ်ကို ဖန်တီးပြီး လုပ်ဆောင်ပါက၊ အမှားတစ်ခု ထွက်လာပါမည်။
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ရွေးချယ်မှု
အမှားအယွင်းမရှိသည့်တိုင် output ရလဒ်များကိုပြသလိုပါက၊ command line ရှိ -v option ဖြင့် command ကို run ပါ။
$ 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 ဖိုင်ရှိ doctest.testmod() တွင် အငြင်းအခုံ verbose=True ကို သတ်မှတ်ပါ။
if __name__ == '__main__':
    import doctest
    doctest.testmod(verbose=True)
runtime တွင် -v option မပါဘဲ output ရလဒ်များကိုအမြဲပြသလိမ့်မည်။
$ 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.
command line မှ doctest module ကိုဖွင့်ပါ။
if __name__ == '__main__'၎င်းတွင် အခြားတစ်ခုခုကို ပြုလုပ်လိုပါက၊ py ဖိုင်တွင် doctest.testmod() မခေါ်ဘဲ doctest module ကို တိုက်ရိုက် run နိုင်ပါသည်။
ဥပမာအားဖြင့်၊ အောက်ပါကိစ္စများတွင်
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)
၎င်းသည် command line arguments များကို လက်ခံနိုင်ပြီး ပုံမှန်အတိုင်း လုပ်ငန်းစဉ်ကို လုပ်ဆောင်နိုင်သည်။
$ python3 doctest_example_without_import.py 3 4
7
-m option ဖြင့် script တစ်ခုအနေဖြင့် doctest ကို run ပါက၊ test သည် doctest ရေးထားသည့် function ကို ဆန့်ကျင်မည်ဖြစ်သည်။ အထွက်ရလဒ်များကိုပြသလိုပါက -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 တွင်အစား ပြင်ပစာသားဖိုင်တွင် စမ်းသပ်ကုဒ်ကိုလည်း ရေးနိုင်သည်။
စာသားဖိုင်ကိုဘယ်လိုရေးရမလဲ
docstring တွင်ဖော်ပြထားသည့်အတိုင်း Python အပြန်အလှန်အကျိုးသက်ရောက်မှုမုဒ်ဖော်မတ်ဖြင့်ရေးပါ။ အသုံးပြုရမည့် လုပ်ဆောင်ချက်များကို တင်သွင်းရန် လိုအပ်ပါသည်။
စမ်းသပ်မည့် .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 ဖိုင်မရှိလျှင်ပင်၊ သင်သည် command line မှစာသားဖိုင်ကိုတိုက်ရိုက်ဖတ်နိုင်ပြီးစမ်းသပ်မှုများကိုလုပ်ဆောင်နိုင်သည်။
script တစ်ခုအနေဖြင့် doctest ကို run ရန် -m option ဖြင့် Python command ကို run ပါ။ စာသားဖိုင်လမ်းကြောင်းကို command line argument အဖြစ် သတ်မှတ်နိုင်ပါတယ်။
$ 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.

 
 
