Python пастаўляецца са стандартным модулем doctest, які правярае змесціва радка дакументаў, што дазваляе лёгка запісваць прыклады ўводу і вываду ў радок дакументаў і робіць дакументацыю больш простым для разумення.
Тут прадстаўлена наступная інфармацыя.
- Просты прыклад тэставання з doctest
- Калі няма памылкі
- Калі ёсць памылка
- Кантралюйце вынікі вываду з дапамогай параметраў і аргументаў
-v
Варыянтverbose
аргумент (напрыклад, функцыя, праграма, праграма)
- Запусціце модуль doctest з каманднага радка
- Напісанне тэстаў у знешні тэкставы файл
- Як напісаць тэкставы файл
- Выклікаецца з файла py
- Непасрэдна выканаць тэкставы файл
Просты прыклад тэставання з doctest
Дакументальны радок – гэта радок, заключаны ў адно з наступнага: (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.
Напісанне тэстаў у знешні тэкставы файл
Вы таксама можаце напісаць тэставы код у знешні тэкставы файл, а не ў радок дакументаў.
Як напісаць тэкставы файл
Пішыце ў фармаце інтэрактыўнага рэжыму Python, як апісана ў радку дакументаў. Неабходна імпартаваць функцыі, якія будуць выкарыстоўвацца.
Калі вы хочаце змясціць тэкставы файл у той жа каталог, што і файл .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.