Питхон долази са стандардним доцтест модулом који тестира садржај низа докумената, што олакшава писање улазних и излазних примера у доцстринг и олакшава разумевање документације.
Овде се налазе следеће информације.
- Једноставан пример тестирања са доцтестом
- Ако нема грешке
- Ако постоји грешка
- Контролишите излазне резултате помоћу опција и аргумената
-v
Опцијаverbose
аргумент (нпр. функција, програм, програм)
- Покрените доцтест модул из командне линије
- Писање тестова у екстерној текстуалној датотеци
- Како написати текстуалну датотеку
- Позван из пи датотеке
- Директно извршите текстуалну датотеку
Једноставан пример тестирања са доцтестом
Докстринг је стринг затворен у нешто од следећег: (1) име функције која се тестира, (2) име функције која се тестира и (3) очекивана излазна вредност у Питхон интерактивном режиму.
"""
''
Ако нема грешке
Уверите се да је код исправан у садржају функције и низа докумената.
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.
То је приказано на следећи начин.
Очекиване излазне вредности записане у доцтест-у. | Expected |
Стварна излазна вредност | Got |
Контролишите излазне резултате помоћу опција и аргумената
-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аргумент (нпр. функција, програм, програм)
Ако желите да увек приказујете резултате излаза, наведите аргумент вербосе=Труе у доцтест.тестмод() у пи датотеци.
if __name__ == '__main__':
import doctest
doctest.testmod(verbose=True)
Резултати излаза ће увек бити приказани без опције -в у време извођења.
$ 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.
Покрените доцтест модул из командне линије
if __name__ == '__main__'
Ако желите да урадите нешто друго у њему, можете покренути доцтест модул директно из командне линије без позивања доцтест.тестмод() у пи датотеци.
На пример, у следећим случајевима
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
Ако покренете доцтест као скрипту са опцијом -м, тест ће бити покренут против функције у којој је доцтест написан. Ако желите да прикажете резултате излаза, додајте -в као и раније.
$ 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.
Писање тестова у екстерној текстуалној датотеци
Такође можете написати тестни код у екстерну текстуалну датотеку уместо у доцстринг.
Како написати текстуалну датотеку
Пишите у Питхон формату интерактивног режима, као што је описано у документу. Неопходно је увести функције које ће се користити.
Ако желите да текстуалну датотеку ставите у исти директоријум као и .пи датотека за тестирање, само је увезите на следећи начин.
>>> from doctest_example import add
>>> add(1, 2)
3
>>> add(5, 10)
15
Позван из пи датотеке
Позовите доцтест.тестфиле() у другој .пи датотеци ради тестирања.
Наведите путању текстуалне датотеке у којој је тестни код написан као аргумент доцтест.тестфиле().
import doctest
doctest.testfile('doctest_text.txt')
Покрените ову пи датотеку.
$ 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.
Директно извршите текстуалну датотеку
Чак и ако немате пи датотеку, можете прочитати текстуалну датотеку директно из командне линије и покренути тестове.
Покрените команду Питхон са опцијом -м да бисте покренули доцтест као скрипту. Можете навести путању текстуалне датотеке као аргумент командне линије.
$ 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.