Workshop for PyCon CZ 2017: Web testing using Python
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
mapotic_testing
my_testing
.gitignore
README.md
requirements.txt

README.md

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, zvolte záložku Advanced a klikněte na Environment variables
  • v poli System variables vyberte Path a klikněte na Edit
  • klikněte na New, vložte cestu např. C:\webdrivers\ a klikněte na 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 a aktivujte ho:

pip install virtualenv
virtualenv -p python3 venv-testing
source venv-testing/bin/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:

======================================== 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