Python සම්මත doctest මොඩියුලයක් සමඟ එන අතර එය docstring හි අන්තර්ගතය පරීක්ෂා කරයි, docstring හි ආදාන සහ ප්රතිදාන උදාහරණ ලිවීම පහසු කරවන අතර ලේඛන තේරුම් ගැනීම පහසු කරයි.
පහත තොරතුරු මෙහි දක්වා ඇත.
- Doctest සමඟ පරීක්ෂා කිරීම සඳහා සරල උදාහරණයක්
- දෝෂයක් නොමැති නම්
- දෝෂයක් තිබේ නම්
- විකල්ප සහ තර්ක මගින් නිමැවුම් ප්රතිඵල පාලනය කරන්න
-v
විකල්පයverbose
තර්කය (උදා. ශ්රිතය, වැඩසටහන, වැඩසටහන)
- විධාන රේඛාවෙන් doctest මොඩියුලය ධාවනය කරන්න
- බාහිර පෙළ ගොනුවක පරීක්ෂණ ලිවීම
- පෙළ ගොනුවක් ලියන ආකාරය
- 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__'
මෙයින් අදහස් කරන්නේ “අනුරූපී ස්ක්රිප්ට් ගොනුව විධාන රේඛාවෙන් ක්රියාත්මක කළ විට පමණක් පසුකාලීන සැකසුම් ක්රියාත්මක කරන්න.
දෝෂයක් තිබේ නම්
ඔබ පහත වැරදි කේතය සාදා ක්රියාත්මක කරන්නේ නම්, දෝෂයක් ප්රතිදානය වනු ඇත.
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 ගොනුවේ doctest.testmod() හි තර්කය verbose=True සඳහන් කරන්න.
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.
බාහිර පෙළ ගොනුවක පරීක්ෂණ ලිවීම
ඔබට පරීක්ෂණ කේතය 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 ගොනුව නොමැති වුවද, ඔබට විධාන රේඛාවෙන් පෙළ ගොනුව කෙලින්ම කියවා පරීක්ෂණ ක්රියාත්මක කළ හැකිය.
doctest ස්ක්රිප්ට් එකක් ලෙස ක්රියාත්මක කිරීමට -m විකල්පය සමඟ Python විධානය ක්රියාත්මක කරන්න. ඔබට විධාන රේඛා තර්කයක් ලෙස පෙළ ගොනු මාර්ගය නියම කළ හැක.
$ 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.