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.