Skip to content
 
 

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Testování webových aplikací pomocí Pythonu

Netrapte sebe nebo svoje kolegy rutinním manuálním proklikáváním. Testy základních funkcí webové aplikace se dají automatizovat během pár hodin a pak už ji budou proklikávat za vás - třeba každou hodinu.

Co se dozvíte:

  • základy testování webových aplikací
  • jaké technologie se dají použít pro automatizaci testování webových aplikací v kombinaci s Pythonem a jak je nakonfigurovat

Co si vyzkoušíte:

  • společně napíšeme pár testů webové aplikace
  • pokud zbyde čas vytvoříte si jednoduchý test vámi zvolené webové aplikace

Co je nutné umět:

Co se hodí umět:

  • základy html a css (DOM a selektory)

Materiály:

Co mít připraveno:

Použité technologie

Instalace webdriveru

Stáhněte webový ovladač Google Chrome Driver a rozbalte zip.

Přidejte chromedriver do proměnné PATH (aby mohl být spouštěn pythonem).

Windows

Uložte soubor chromedriver.exe kamkoliv (např. do C:\webdrivers\) a přidejte cestu k souboru do Environment variables (Path):

  • Otevřete System Properties/Vlastnosti systému, zvolte záložku Advanced/Upřesnit a klikněte na Environment variables/Proměnné prostředí
  • v poli System variables/Systémové proměnné vyberte Path a klikněte na Edit/Upravit
  • klikněte na New/Nový, vložte cestu např. C:\webdrivers\ a potvrďte OK

Zkuste spustit ovladač v cmd:

chromedriver

Odpověď by měla být:

Starting ChromeDriver ...
Only local connections are allowed.

Linux

Uložte soubor chromedriver kamkoliv na disk.

Vytvořte alias pro chromedriver v /usr/bin/:

sudo ln -s /path/to/chromedriver /usr/bin

Zkontrolujte cestu k ovladači:

which chromedriver

Odpověď by měla být:

/usr/bin/chromedriver

Zkuste spustit ovladač:

chromedriver

Odpověď by měla být:

Starting ChromeDriver ...
Only local connections are allowed.

macOS

Přesuňte chromedriver z Downloads do /usr/local/bin/

sudo mv /Downloads/chromedriver /usr/local/bin/chromedriver

Zkontrolujte cestu k ovladači:

which chromedriver

Odpověď by měla být:

/usr/local/bin/chromedriver

Otevřete v textovém editoru soubor paths - např.:

atom /etc/paths

Přidejte cestu k ovladači na poslední řádek souboru a uložte:

/usr/local/bin/chromedriver

NOTE: Smažte ostatní cesty k ovladači - pokud jsou v souboru uvedeny.

Zkuste spustit ovladač:

chromedriver

Odpověď by měla být:

Starting ChromeDriver ...
Only local connections are allowed.

Instalace - pokračování

Naklonování repozitáře

Naklonujte si repozitář webtesting do vašeho počítače a vstupte do adresáře:

git clone https://github.com/madlenkk/webtesting.git
cd webtesting

Instalace virtualního prostředí

Upgradujte pip: na Linux/macOS:

pip install -U pip

na Windows:

python -m pip install -U pip

Nainstalujte virtualenv, vytvořte virtuální prostředí venv-testing pro tento projekt:

pip install virtualenv
virtualenv -p python venv-testing

Aktivujte vytvořené virtuální prostředí: na Linux/macOS:

source venv-testing/bin/activate

na Windows:

venv-testing\Scripts\activate

NOTE: Virtualenv může být deaktivován pomocí příkazu deactivate.

Instalace balíčků

S aktivovaným virtualenv nainstalujte požadované balíčky ze souboru requirements.txt pomocí příkazu pip :

pip install -r requirements.txt

Ověřte, že byla instalace úspěšná, např. pomocí:

pytest

Odpověď by měla být zhruba následující:

======================================== test session starts ========================================
platform linux -- Python 3.6.5, pytest-4.0.1, py-1.7.0, pluggy-0.8.0
sensitiveurl: .*
rootdir: /home/magdalena/dev/webtesting, inifile:
plugins: variables-1.7.1, selenium-1.14.0, metadata-1.7.0, html-1.19.0, base-url-1.4.1
collected 0 items                                                                                   

=================================== no tests ran in 0.01 seconds ====================================

Struktura

V adresáři webtesting se nacházejí dva podadresáře:

  • mapotic_testing - adresář, který obsahuje kompletní funkční testy aplikace Mapotic (vaše nápověda)
  • my_testing - váš adresář na hraní

Vstupte do adresáře my_testing:

cd my_testing
  • test.py - file with main functions to run the tests - calls another test scripts from directory tests
  • conftest.py - global setting of all tests
  • pytest.ini - default options and markers
  • variables.json - variables used in tests
  • tests - directory with test scripts

Spouštění testů

Vše potřebné je nainstalováno a virtuální prostředí je aktivováno? V adresáři my_testing spusťte připravený soubor test.py:

pytest test.py -k test_setup

Pytest by měl otevřít webový prohlížeč, provést krátký test a zase ho zavřít. V konzoli by mělo být asi toto:

======================================== test session starts ========================================
platform linux -- Python 3.6.5, pytest-4.0.1, py-1.7.0, pluggy-0.8.0
driver: Chrome
sensitiveurl: none
baseurl: https://www.mapotic.com?utm_source=testworkshops&utm_medium=workshop&utm_campaign=magdatests
rootdir: /home/magdalena/dev/webtesting/mapotic_testing, inifile: pytest.ini
plugins: variables-1.7.1, selenium-1.14.0, metadata-1.7.0, html-1.19.0, base-url-1.4.1
collected 2 items / 1 deselected                                                                    

test.py .                                                                                     [100%]

------ generated html file: /home/magdalena/dev/webtesting/mapotic_testing/reports/report.html ------
============================== 1 passed, 1 deselected in 5.12 seconds ===============================

Options

Default options are defined in pytest.ini.

  • test.py
  • --base-url - set url of tested application (default is defined in pytest.ini)
  • --html - set filename of output log (default is defined in pytest.ini)
  • --driver - set browser used for testing (default is defined in pytest.ini)
  • --variables - set path to variables file (default is defined in pytest.ini)
  • -v, -vv, -vvv - verbose - use to increase verbosity of test log
  • --stop - use if you don't want browser to be closed in case of test failure
  • -k - specify tests to be run
  • -m - specify a Test Suite to be run (available markers are defined in pytest.ini)

NOTE: Pytest v daném adresáři vyhledá a spustí sám od sebe vše, co začíná slovem test, pokud mu pomocí options -k nebo -m nespecifikujeme, co pustit chceme.

e.g.:

pytest test.py -vvv --stop -m complex

To learn more about pytest and its options, use:

pytest --help

About

PyWorking workshop: Web testing using Python

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages