Skip to content

Workshop for PyCon CZ 2017: Web testing using Python

License

Notifications You must be signed in to change notification settings

petrjakubec/webtesting

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Web testing using Python

a workshop by Magdalena Kabátová for PyCon CZ 2017

Write and run automated tests of web applications in few hours and let it work for you since then. First brief introduction to web testing will be given. Then we will use pytest and Selenium frameworks to create automated tests of a demo web page.

Basic knowledge of Python is required (suitable for PyLadies). Basic knowledge of html and css (DOM and selectors) is advantage.

Potřebné technologie

Před zahájením workshopu potřebujete mít:

Ostatní nainstalujeme během workshopu.

Obsah workshopu

  • Zahájení
  • Úvod do testování SW
  • Příprava na testování
  • Automatické testování
  • Úkoly

Úvod do testování SW

Testování SW pomáhá eliminovat bugy v systému.

Testování SW je široký pojem. Existuje tisíc a jedno rozdělení testování na typy. Pro tento workshop je důležité:

  • statické x dynamické
  • white-box x black-box
  • unit x integrační

Více o testování SW např.:

Příprava na testování

Úkol: Zaregistrujte se na testovacím eshopu. Email může být smyšlený, ale zapamatujte si ho.

Automatické testování

Použité technologie:

Instalace

  1. Otevřete https://github.com/madlenkk/webtesting, přihlašte se a proveďte fork na svůj github (tlačítko vpravo nahoře).

  2. Otevřete konzoli a vstupte do vámi zvolené složky:

cd my_projects
  1. Naklonujte si repozitář webtesting z vašeho githubu a vstupte do složky webtesting:
git clone https://github.com/[your_name]/webtesting.git
cd webtesting
  1. Vytvořte virtuální prostředí:
virtualenv -p python3 venv-tests
  1. Spusťte virtuální prostředí:
  • Windows:
> venv-tests\Scripts\activate.bat

Pozn.: V případě potíží, restartujte bash.

  • Linux/macOS:
$ source venv-tests/bin/activate
  1. Do vitruálního prostředí nainstalujte potřebné balíky uvedené v souboru requirements.txt pomocí pip:
pip install -r requirements.txt

Úspěšnost této instalace můžete ověřit například pomocí příkazu:

pytest --version

Pokud se instalace nezdařila, pravděpodobně budete muset nainstalovat pip pro python3. Vygooglete si, jak na to na vašem OS.

  1. Proveďte instalaci a nastavení webového ovladače:

Stáhněte a nainstalujte Google Chrome Driver. Přidejte chromedriver do adresáře $PATH: * Windows: Exportujte zip, uložte soubor chromedriver.exe a přidejte cestu k souboru do Environment Variables (PATH). * Linux: Exportujte zip do /usr/local/bin/.

  1. Správné nastavení webdriveru ověřte spuštěním zkušební testu installation.py, který se nachází ve složce installation:
python installation/test_installation.py

Pokud je vše v pořádku, spustí se prohlížeč, provede se test, prohlížeč se opět vypne a v konzoli se vypíše výsledek testu. Sledujte, co se děje v prohlížeči a následně proveďte úkon, který test vypsal do vaší konzole.

Spuštění testů

Všechny testy jsou uloženy ve složce tests a rozděleny do podsložek podle testovacích scénářů (suites).

Před spuštěním testů, je potřeba:

  • mít aktivované virtuální prostředí venv-tests
  • být ve složce tests

Vaše konzole by tedy měla vypisovat zhruba toto: (venv-tests) username: ~/webtesting/tests $ (Linux).

Všechny testy ve složce tests můžete spustit pomocí příkazu:

pytest

Pytest spouští automaticky všechny soubory a funkce začínající slovem test, které najde v akutální složce a jejích podsložkách. I ty musejí začínat slovem test.

Pokud chcete spouštět testy jednotlivě, přidejte cestu k souboru s daným testem - např.:

pytest test_suite_02_login/test_case_02_invalid_login.py

Probíhající test můžete přerušit zavřením prohlížeče, ve kterém test probíhá, nebo v konzoli pomocí CTRL + C (Linux).

Konfigurace testů

Rozmanitá konfigurace je uložena v souboru pytest.ini, díky kterému není potřeba vypisovat parametry do konzole. Nicméně vypsáním parametrů do konzole lze výchozí konfiguraci přebýt nebo doplnit.

pytest --html=reports/another_report.html

Více o jednotlivých parametrech se dozvíte pomocí:

pytest --help

nebo v dokumentaci k pytest.

Proměnné

V jednotlivých testech jsou použity proměnné, které jsou odděleny od kódu a najdete je v souboru variables.json.

Úkol: Otevřete soubor variables.json v textovém editoru a přepište hodnoty proměnných na vaše vlastní - username a password se musí shodovat s údaji, které jste vyplnili při registraci do testovacího eshopu. Spusťte test pro validní přihlášení a html report nechte vypsat do souboru reports/01_valid_login.html.

Psaní testů

  • globální nastavení všech testů je uloženo v souboru conftest.py
  • názvy podsložek a souborů testů musí začínat slovem test
  • v každém testu je nejprve nutné naimportovat moduly ze selenia
  • název hlavní funkce musí začínat slovem test
  • elementy na stránce se lokalizují pomocí: find_element(By.[metoda])
  • ověření očekávaného výsledku (Expected Result z testovacího scénáře) se provádí pomocí assert - více v dokumentaci k pytest

Inspektor (DevTools)

  • F12 nebo CTRL + SHIFT + I - zapne/vypne inspektor
  • jednotlivé elementy stránky lze prozkoumávat pomocí: CTRL + SHIFT + C v inspektoru + levé tlačítko myši na element na stránce nebo: pravé tlačítko myši na element na stránce + Prozkoumat
  • vyhledávat elementy v inspektoru lze pomocí: CTRL + F
  • F8 v inspektoru - zamrazí/rozmrazí webový prohlížeč

Reporty

Pytest umí generovat přehledné html reporty včetně screenshotů. Nastavují se pomocí parametru --html v souboru pytest.ini nebo přímo v konzoli při spouštění pytest. Více v dokumentaci k pytest-selenium.

Úkoly

Úkol 1

Napište test na odhlášení z testovacího eshopu - podle testovacího scénáře 06_logout.

  • soubor uložte do složky pro příslušný test suite: test_suite_06_logout a pojmenujte ho: test_case_01_logout_**[vase_jmeno]**.py
  • využijte v něm už hotové funkce - např. test_case_01_valid_login.py  * uložte a spusťte test
  • pokud test prošel, vypublikujte ho na váš github
    git add test_suite_06_logout/test_case_01_logout_[vase_jmeno].py
    git commit --all --message "Ading my test for logout"
    git push
    
  • jděte na váš github a proveďte pull request (tlačítko new-pull-request-btn vyhledejte na stránce pomocí inspektoru)

Úkol 2

Vyberte si libovolnou webovou stránku a vymyslete a naprogramujte jednoduchý test této stránky.

  • sepiště si testovací scénář (a nebo ne - je to na vás)
  • ve složce webtesting vytvořte novou složku s názvem tests_**[vase_jmeno]**
  • do této složky zkopírujte soubory tests/conftest.py a tests/pytest.ini - do parametru base_url vložte url vaší testované aplikace
  • vytvořte nový soubor např. test.py (nemusíte řešit zařazení do podsložek - a nebo jo - je to na vás) a naprogramujte test podle scénáře (a nebo ne - je to na vás)  * uložte a spusťte test
  • pokud test prošel, vypublikujte ho na váš github
    git add tests_[vase_jmeno]
    git commit --all --message "Adding my own test"
    git push
    
  • jděte na váš github a proveďte pull request (tlačítko new-pull-request-btn vyhledejte na stránce pomocí inspektoru)

About

Workshop for PyCon CZ 2017: Web testing using Python

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%