Python ភ្ជាប់មកជាមួយម៉ូឌុល doctest ស្តង់ដារដែលសាកល្បងមាតិកានៃ docstring ដែលធ្វើឱ្យវាងាយស្រួលក្នុងការសរសេរ input និង output ឧទាហរណ៍នៅក្នុង docstring និងធ្វើឱ្យឯកសារងាយស្រួលយល់។
ព័ត៌មានខាងក្រោមត្រូវបានផ្តល់ជូននៅទីនេះ។
- ឧទាហរណ៍សាមញ្ញនៃការធ្វើតេស្តជាមួយ doctest
- ប្រសិនបើគ្មានកំហុស
- ប្រសិនបើមានកំហុស
- គ្រប់គ្រងលទ្ធផលលទ្ធផលដោយជម្រើស និងអាគុយម៉ង់
-v
ជម្រើសverbose
អាគុយម៉ង់ (ឧ. មុខងារ, កម្មវិធី, កម្មវិធី)
- ដំណើរការម៉ូឌុល doctest ពីបន្ទាត់ពាក្យបញ្ជា
- ការធ្វើតេស្តសរសេរនៅក្នុងឯកសារអត្ថបទខាងក្រៅ
- របៀបសរសេរឯកសារអត្ថបទ
- ហៅចេញពីឯកសារ py
- ប្រតិបត្តិឯកសារអត្ថបទដោយផ្ទាល់
ឧទាហរណ៍សាមញ្ញនៃការធ្វើតេស្តជាមួយ doctest
docstring គឺជាខ្សែអក្សរដែលបានភ្ជាប់ក្នុងមួយក្នុងចំណោមខាងក្រោមនេះ៖ (1) ឈ្មោះនៃអនុគមន៍ដែលត្រូវសាកល្បង (2) ឈ្មោះនៃអនុគមន៍ដែលត្រូវសាកល្បង និង (3) តម្លៃលទ្ធផលដែលរំពឹងទុកក្នុងទម្រង់អន្តរកម្ម Python ។
"""
''
ប្រសិនបើគ្មានកំហុស
ត្រូវប្រាកដថាលេខកូដត្រឹមត្រូវនៅក្នុងមុខងារ និងមាតិកាឯកសារ។
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អាគុយម៉ង់ (ឧ. មុខងារ, កម្មវិធី, កម្មវិធី)
ប្រសិនបើអ្នកចង់បង្ហាញលទ្ធផលលទ្ធផលជានិច្ច សូមបញ្ជាក់អាគុយម៉ង់ verbose=True ក្នុង doctest.testmod() ក្នុងឯកសារ py ។
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__'
ប្រសិនបើអ្នកចង់ធ្វើអ្វីមួយផ្សេងទៀតនៅក្នុងវា អ្នកអាចដំណើរការម៉ូឌុល doctest ដោយផ្ទាល់ពីបន្ទាត់ពាក្យបញ្ជាដោយមិនហៅ doctest.testmod() នៅក្នុងឯកសារ py ។
ឧទាហរណ៍នៅក្នុងករណីដូចខាងក្រោម
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
ប្រសិនបើអ្នកដំណើរការ doctest ជាស្គ្រីបដែលមានជម្រើស -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 ។
របៀបសរសេរឯកសារអត្ថបទ
សរសេរក្នុងទម្រង់ទម្រង់អន្តរកម្ម Python ដូចដែលបានពិពណ៌នានៅក្នុង docstring។ វាចាំបាច់ក្នុងការនាំចូលមុខងារដែលត្រូវប្រើ។
ប្រសិនបើអ្នកចង់ដាក់ឯកសារអត្ថបទក្នុងថតដូចគ្នានឹងឯកសារ .py ដែលត្រូវសាកល្បង គ្រាន់តែនាំចូលវាដូចខាងក្រោម។
>>> from doctest_example import add
>>> add(1, 2)
3
>>> add(5, 10)
15
ហៅចេញពីឯកសារ py
ហៅទៅ doctest.testfile() នៅក្នុងឯកសារ .py មួយផ្សេងទៀតសម្រាប់ការធ្វើតេស្ត។
បញ្ជាក់ផ្លូវនៃឯកសារអត្ថបទដែលកូដសាកល្បងត្រូវបានសរសេរជាអាគុយម៉ង់នៃ 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 ក៏ដោយ អ្នកអាចអានឯកសារអត្ថបទដោយផ្ទាល់ពីបន្ទាត់ពាក្យបញ្ជា ហើយដំណើរការការធ្វើតេស្ត។
ដំណើរការពាក្យបញ្ជា Python ជាមួយជម្រើស -m ដើម្បីដំណើរការ doctest ជាស្គ្រីប។ អ្នកអាចបញ្ជាក់ផ្លូវឯកសារអត្ថបទជាអាគុយម៉ង់បន្ទាត់ពាក្យបញ្ជា។
$ 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.