11# Testování
22
33Programátorská práce nespočívá jen v tom, program napsat.
4- Důležité je si i ověřit, že opravdu funguje ( a případně ho pak opravit) .
5- Ověřování, že program funguje, se říká * testování* .
4+ Důležité je si i ověřit, že opravdu funguje, a případně ho pak opravit.
5+ Ověřování, že program funguje, se říká * testování* (angl. * testing * ) .
66
77Zatím jsi asi svoje programy testoval{{a}} tak, že jsi
88je zkusil{{a}} spustit, něco zadal{{a}} a podíval{{a}} se,
@@ -11,16 +11,14 @@ U větších programů, které budou mít více a více
1111možností, ale bude těžší a těžší takhle zkontrolovat,
1212jestli všechny ty možnosti fungují, jak mají.
1313
14- Proto si programátoři, místo aby program zkoušeli ručně, píšou jiné programy,
15- které testují jejich výtvory za ně.
14+ Proto si programátoři často nezkouší programy „ ručně“.
15+ Píšou jiné programy, které jejich výtvory testují za ně.
1616
1717* Automatické testy* jsou funkce, které
18- zkontrolují, že náš program funguje správně.
18+ zkontrolují, že program funguje správně.
1919Spuštěním testů můžeš kdykoli ověřit, že kód funguje.
20- Hlavní výhoda je, že když v otestovaném kódu
21- v budoucnu uděláš nějakou změnu,
22- testy ověří, že jsi nerozbil{{a}} nic, co dříve
23- fungovalo.
20+ Když v otestovaném kódu v budoucnu uděláš nějakou změnu,
21+ testy ověří, že jsi nerozbil{{a}} nic, co dříve fungovalo.
2422
2523
2624## Instalace knihovny pytest
@@ -46,11 +44,17 @@ Potom zadej následující příkaz.
4644(Je to příkaz příkazové řádky, podobně jako
4745` cd ` nebo ` mkdir ` ; nezadávej ho do Pythonu.)
4846
47+ > [ warning] Opisuj opatrně!
48+ > Příkaz níže instaluje software z Internetu.
49+ > Za knihovnu ` pytest ` autoři tohoto kurzu ručí.
50+ > Jiné knihovny ale můžou dělat neplechu nebo být dokonce „zavirované“.
51+ > Dej si proto pozor a ve jménu ` pytest ` neudělej překlep!
52+
4953``` console
5054(venv)$ python -m pip install pytest
5155```
5256
53- > [ note] Co to znamená?
57+ > [ note] Co ten příkaz znamená?
5458> ` python -m pip ` zavolá Python s tím, že má pustit modul
5559> ` pip ` . Tento modul umí instalovat nebo
5660> odinstalovávat knihovny.
@@ -96,9 +100,8 @@ def test_secti():
96100
97101Co se v té testovací funkci děje?
98102
99- Příkaz ` assert ` vyhodnotí výraz za ním
100- a pokud výsledek není pravdivý, vyvolá výjimku,
101- která způsobí, že test selže.
103+ Příkaz ` assert ` vyhodnotí výraz za ním a pokud výsledek není pravdivý,
104+ vyvolá výjimku, která způsobí, že test selže.
102105Můžeš si představit, že ` assert a == b ` dělá následující:
103106
104107``` python
@@ -108,8 +111,8 @@ if not (a == b):
108111
109112> [ note]
110113> Zatím ` assert ` nepoužívej jinde než v testovacích funkcích.
111- > V „normálním” kódu má ` assert ` vlastnosti ,
112- > do kterých teď nebudeme zabředávat.
114+ > V „normálním” kódu se ` assert ` může chovat trochu jinak než výše ,
115+ > ale do toho teď nebudeme zabředávat.
113116
114117
115118## Spouštění testů
@@ -118,7 +121,7 @@ Testy se spouští zadáním příkazu
118121` python -m pytest -v ` následovaným názvem souboru s testy.
119122Tedy v překladu: <strong >Python</strong >e, pusť
120123<strong >m</strong >odul <strong >pytest</strong >,
121- v „ukecaném” režimu (angl. <strong >v</strong >erbose) nad zadaným souborem.
124+ v „ukecaném” režimu (angl. <strong >v</strong >erbose) a se zadaným souborem.
122125
123126``` console
124127$ python -m pytest -v test_secteni.py
@@ -144,10 +147,10 @@ najevo a přidá několik informací, které můžou
144147usnadnit nalezení a opravu chyby.
145148
146149> [ note]
147- > Argument s názvem souboru můžeme vynechat: ` python -m pytest -v `
150+ > Argument s názvem souboru můžeš vynechat: ` python -m pytest -v ` .
148151> V takovém případě ` pytest ` projde aktuální adresář a spustí testy
149152> ze všech souborů, jejichž jméno začíná na ` test_ ` . Místo souboru
150- > lze též uvést adresář a ` pytest ` vyhledá testy v něm.
153+ > lze též uvést adresář: ` pytest ` vyhledá testy v něm.
151154
152155Zkus si změnit funkci ` secti ` (nebo její test) a podívat se,
153156jak to vypadá když test „neprojde“.
@@ -158,7 +161,7 @@ jak to vypadá když test „neprojde“.
158161Testy se většinou nepíšou přímo ke kódu,
159162ale do souboru vedle.
160163Je to tak přehlednější a taky to pak zjednodušuje
161- distribuci – předávání kódu někomu, kdo ho chce
164+ * distribuci* – předání kódu někomu, kdo ho chce
162165jen spustit a testy nepotřebuje.
163166
164167Rozděl soubor s testem sečítání: funkci ` secti ` přesuň do modulu ` secteni.py ` ,
@@ -173,7 +176,7 @@ Test by měl opět projít.
173176
174177Automatické testy musí projít „bez dozoru“.
175178V praxi se často automaticky spouští, případné chyby se automaticky
176- oznamují (např. e-mailem) a fungující kód se automaticky
179+ oznamují (např. e-mailem) a fungující otestovaný kód se automaticky
177180začne používat dál (nebo se rovnou vydá zákazníkům).
178181
179182Co to znamená pro nás?
@@ -308,4 +311,3 @@ def test_tah_chyba():
308311 with pytest.raises(ValueError ):
309312 piskvorky.tah_pocitace(' oxoxoxoxoxoxoxoxoxox' )
310313```
311-
0 commit comments