1
1
# Testování
2
2
3
3
Programá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 * ) .
6
6
7
7
Zatím jsi asi svoje programy testoval{{a}} tak, že jsi
8
8
je 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
11
11
možností, ale bude těžší a těžší takhle zkontrolovat,
12
12
jestli všechny ty možnosti fungují, jak mají.
13
13
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ě.
16
16
17
17
* Automatické testy* jsou funkce, které
18
- zkontrolují, že náš program funguje správně.
18
+ zkontrolují, že program funguje správně.
19
19
Spuš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.
24
22
25
23
26
24
## Instalace knihovny pytest
@@ -46,11 +44,17 @@ Potom zadej následující příkaz.
46
44
(Je to příkaz příkazové řádky, podobně jako
47
45
` cd ` nebo ` mkdir ` ; nezadávej ho do Pythonu.)
48
46
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
+
49
53
``` console
50
54
(venv)$ python -m pip install pytest
51
55
```
52
56
53
- > [ note] Co to znamená?
57
+ > [ note] Co ten příkaz znamená?
54
58
> ` python -m pip ` zavolá Python s tím, že má pustit modul
55
59
> ` pip ` . Tento modul umí instalovat nebo
56
60
> odinstalovávat knihovny.
@@ -96,9 +100,8 @@ def test_secti():
96
100
97
101
Co se v té testovací funkci děje?
98
102
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.
102
105
Můžeš si představit, že ` assert a == b ` dělá následující:
103
106
104
107
``` python
@@ -108,8 +111,8 @@ if not (a == b):
108
111
109
112
> [ note]
110
113
> 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.
113
116
114
117
115
118
## Spouštění testů
@@ -118,7 +121,7 @@ Testy se spouští zadáním příkazu
118
121
` python -m pytest -v ` následovaným názvem souboru s testy.
119
122
Tedy v překladu: <strong >Python</strong >e, pusť
120
123
<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.
122
125
123
126
``` console
124
127
$ python -m pytest -v test_secteni.py
@@ -144,10 +147,10 @@ najevo a přidá několik informací, které můžou
144
147
usnadnit nalezení a opravu chyby.
145
148
146
149
> [ 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 ` .
148
151
> V takovém případě ` pytest ` projde aktuální adresář a spustí testy
149
152
> 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.
151
154
152
155
Zkus si změnit funkci ` secti ` (nebo její test) a podívat se,
153
156
jak to vypadá když test „neprojde“.
@@ -158,7 +161,7 @@ jak to vypadá když test „neprojde“.
158
161
Testy se většinou nepíšou přímo ke kódu,
159
162
ale do souboru vedle.
160
163
Je 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
162
165
jen spustit a testy nepotřebuje.
163
166
164
167
Rozdě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.
173
176
174
177
Automatické testy musí projít „bez dozoru“.
175
178
V 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
177
180
začne používat dál (nebo se rovnou vydá zákazníkům).
178
181
179
182
Co to znamená pro nás?
@@ -308,4 +311,3 @@ def test_tah_chyba():
308
311
with pytest.raises(ValueError ):
309
312
piskvorky.tah_pocitace(' oxoxoxoxoxoxoxoxoxox' )
310
313
```
311
-
0 commit comments