Ten kurs jest częścią Podstawy Testów Automatycznych w Selenium i Python – o serii możesz poczytać w poście O serii Podstawy Testów Automatycznych w Selenium i Python. Jak widzisz jest to część 4 więc jeśli nie ukończyłeś poprzednich części koniecznie zobacz:

Podstawy Testów Automatycznych w Selenium i Python cz. 1
Podstawy Testów Automatycznych w Selenium i Python cz. 2
Podstawy Testów Automatycznych w Selenium i Python cz. 3

Wstęp

Potrafimy już pisać proste testy GUI w oparciu o interakcje z elementami na stronie. Teraz przyszedł czas na podsumowanie nabytych umiejętności oraz wzbogacenie ich o zupełnie nowe kompetencje. Pozwolą nam one na tworzenie bardziej kompleksowych rozwiązań, a same testy staną się pełniejsze i łatwiejsze w utrzymaniu.

Co Cię czeka

Zaczniemy intensywnie od zasymulowania zdarzenia, z którym na pewno spotkacie się w prawdziwej pracy w projekcie. Po uporaniu się ze wszystkimi zadaniami, przejdziemy do modułów i pakietów w Pythonie – poznamy czym one tak właściwie są oraz jak tworzyć własne. Następnie zapoznamy się z konsolą Pythona, która jest dostępna z IDE PyCharm, oraz poćwiczymy wspólnie pracę ze strukturami i instrukcjami. Usprawnimy także nasze testy – poznamy poprawne sposoby czekania na elementy, które powinny znaleźć się na stronie.
Dowiemy się również, jak w prosty i efektywny sposób zarządzać stworzonymi testami za pomocą Test Suite oraz jak stworzyć profesjonalny raport z testów automatycznych.

Podsumowując, czekają nas następujące rzeczy:

  • zapoznamy się z podstawowymi elementami języka Python jakimi są Moduły i Pakiety,
  • dowiemy się czym są testy typu Smoke i Sanity,
  • odrobina nowych konstrukcji języka Python – listy i struktury for,
  • opowiemy jak dobrze zarządzać dużą liczbą testów poprzez Test Suite,
  • zapoznamy się bliżej z konsolą dostępną w PyCharm,
  • zobaczymy jak w prosty sposób można przygotować raport z naszych testów za pomocą biblioteki Allure,
  • dowiemy się jak poprawnie czekać na elementy na stronie,
  • zrobimy duży refaktor i wprowadzimy obszerne zmiany – zasymulujemy rzeczy, jakie Cię spotkają w prawdziwym projekcie 😉

Dodatkowo, aby ułatwić zaznajamianie się z nowymi pojęciami, wszystkie nowe terminy zebraliśmy w jednym skondensowanym miejscu – w Słowniku do kursu Podstawy Testów Automatycznych. Dzięki niemu w razie potrzeby będziemy mogli szybko przypomnieć sobie znaczenie różnych terminów 🙂 Słownik nie jest jeszcze w pełni kompletny, ale jest cały czas rozwijany – nieustannie dodajemy nowe pojęcia i ich definicje.

Wymagania

Będziemy używać wielu pojęć z poprzednich kursów z serii więc wiedza która tam została opisana będzie niezbędna, Pamiętaj aby samemu eksperymentować i modyfikować otrzymane rozwiązania dzięki czemu nabierzesz wprawy oraz natkniesz się na problemy których nie spotkasz u nas 🙂

Do dzieła!

TIP: Dokładny opis na temat płatności, członkostw i planów dostępowych znajdziesz w poście Członkostwa i Plany Dostępowe.

Informacje o kursie

Szacowany czas ukończenia: 24 godzin

Trudność: Podstawowy

Instruktorzy kursu

Przemek Barański Przemek Barański Autor
Krzysiek Kijas Krzysiek Kijas Autor

Plan Podstawowy

Darmowa

Chcesz mieć dostęp do tego kursu?
Chcesz w prosty i przejrzysty sposób monitorować swoje postępy?
Kliknij Zapisz się! 🙂

Aby mieć darmowy dostęp do tego kursu wymagane jest posiadanie członkostwa Kursant Podstawy Testów Automatycznych w Selenium i Python (Early Bird).
Jeśli wciąż go nie posiadasz: Kliknij Zapisz się! a zostaniesz przeniesiony do strony zapisu do członkostwa

Rewolucje w projekcie

Refactor i własne moduły

Zestaw konsola, lista i for

Listy i pętle w praktyce

Test Suite

Raport z testów

Instrukcja IF – stan ma znaczenie

Własna metoda do czekania na elementy

Wait w Pythonie

Podsumowanie wszystkiego, czego się nauczyliśmy

7 komentarzy

  1. Pingback: O serii - Podstawy Testów Automatycznych w Selenium i Python - Jak Testować?

    1. Hej,
      Poproszę jeszcze o komendę, z jakiej korzystasz podczas generowania raportu 🙂 (albo najlepiej cały stacktrace wraz z komendą)
      Dodatkowo możesz także pokazać strukturę swoich katalogów, gdyż komenda do generowania dosyć mocno od tego zależy 🙂

      Krzysiek Kijas Krzysiek Kijas
      1. Komenda : python -m pytest testsuit_all_tests.py

        Traceback (most recent call last):
        File “C:\Python\lib\runpy.py”, line 193, in _run_module_as_main
        “__main__”, mod_spec)
        File “C:\Python\lib\runpy.py”, line 85, in _run_code
        exec(code, run_globals)
        File “C:\Python\lib\site-packages\pytest.py”, line 67, in
        raise SystemExit(pytest.main())
        File “C:\Python\lib\site-packages\_pytest\config\__init__.py”, line 55, in main
        config = _prepareconfig(args, plugins)
        File “C:\Python\lib\site-packages\_pytest\config\__init__.py”, line 180, in _prepareconfig
        pluginmanager=pluginmanager, args=args
        File “C:\Python\lib\site-packages\pluggy\__init__.py”, line 617, in __call__
        return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
        File “C:\Python\lib\site-packages\pluggy\__init__.py”, line 222, in _hookexec
        return self._inner_hookexec(hook, methods, kwargs)
        File “C:\Python\lib\site-packages\pluggy\__init__.py”, line 216, in
        firstresult=hook.spec_opts.get(‘firstresult’),
        File “C:\Python\lib\site-packages\pluggy\callers.py”, line 196, in _multicall
        gen.send(outcome)
        File “C:\Python\lib\site-packages\_pytest\helpconfig.py”, line 89, in pytest_cmdline_parse
        config = outcome.get_result()
        File “C:\Python\lib\site-packages\pluggy\callers.py”, line 76, in get_result
        raise ex[1].with_traceback(ex[2])
        File “C:\Python\lib\site-packages\pluggy\callers.py”, line 180, in _multicall
        res = hook_impl.function(*args)
        File “C:\Python\lib\site-packages\_pytest\config\__init__.py”, line 612, in pytest_cmdline_parse
        self.parse(args)
        File “C:\Python\lib\site-packages\_pytest\config\__init__.py”, line 777, in parse
        self._preparse(args, addopts=addopts)
        File “C:\Python\lib\site-packages\_pytest\config\__init__.py”, line 729, in _preparse
        self.pluginmanager.load_setuptools_entrypoints(“pytest11”)
        File “C:\Python\lib\site-packages\pluggy\__init__.py”, line 403, in load_setuptools_entrypoints
        self.register(plugin, name=ep.name)
        File “C:\Python\lib\site-packages\_pytest\config\__init__.py”, line 286, in register
        ret = super(PytestPluginManager, self).register(plugin, name)
        File “C:\Python\lib\site-packages\pluggy\__init__.py”, line 254, in register
        hook._maybe_apply_history(hookimpl)
        File “C:\Python\lib\site-packages\pluggy\__init__.py”, line 650, in _maybe_apply_history
        res = self._hookexec(self, [method], kwargs)
        File “C:\Python\lib\site-packages\pluggy\__init__.py”, line 222, in _hookexec
        return self._inner_hookexec(hook, methods, kwargs)
        File “C:\Python\lib\site-packages\pluggy\__init__.py”, line 216, in
        firstresult=hook.spec_opts.get(‘firstresult’),
        File “C:\Python\lib\site-packages\pluggy\callers.py”, line 201, in _multicall
        return outcome.get_result()
        File “C:\Python\lib\site-packages\pluggy\callers.py”, line 76, in get_result
        raise ex[1].with_traceback(ex[2])
        File “C:\Python\lib\site-packages\pluggy\callers.py”, line 180, in _multicall
        res = hook_impl.function(*args)
        File “C:\Python\lib\site-packages\allure_pytest\plugin.py”, line 20, in pytest_addoption
        help=”Generate Allure report in the specified directory (may not exist)”)
        File “C:\Python\lib\site-packages\_pytest\config\argparsing.py”, line 296, in addoption
        raise ValueError(“option names %s already added” % conflict)
        ValueError: option names {‘–alluredir’} already added

        Avatar Katarzyna Kusiak
      1. Zawartość pliku tree.txt

        C:.
        | debug.log
        | lost_hat_front_page_test.py
        | lost_hat_login_page_tests.py
        | lost_hat_product_page_tests.py
        | lost_hat_smoke_tests.py
        | testsuit_all_tests.py
        | tree.txt
        |
        +—.idea
        | jaktestowacDemoTests.iml
        | misc.xml
        | modules.xml
        | workspace.xml
        |
        +—.pytest_cache
        | \—v
        | \—cache
        | nodeids
        |
        +—helpers
        | | functional_helpers.py
        | |
        | \—__pycache__
        | functional_helpers.cpython-36.pyc
        |
        +—libs
        | \—allure-2.7.0
        | +—bin
        | | allure
        | | allure.bat
        | |
        | +—config
        | | allure-cucumber.yml
        | | allure-junit.yml
        | | allure.yml
        | |
        | +—lib
        | | | allure-commandline-2.7.0.jar
        | | | allure-generator-2.7.0.jar
        | | | allure-plugin-api-2.7.0.jar
        | | | allure1-model-1.0.jar
        | | | allure2-model-api-1.0.0.jar
        | | | allure2-model-jackson-1.0.0.jar
        | | | allure2-model-pojo-1.0.0.jar
        | | | commons-beanutils-1.9.3.jar
        | | | commons-codec-1.10.jar
        | | | commons-collections-3.2.2.jar
        | | | commons-collections4-4.1.jar
        | | | commons-io-2.6.jar
        | | | commons-lang3-3.7.jar
        | | | commons-logging-1.2.jar
        | | | commons-text-1.4.jar
        | | | flexmark-0.34.8.jar
        | | | flexmark-util-0.34.8.jar
        | | | freemarker-2.3.28.jar
        | | | httpclient-4.5.6.jar
        | | | httpcore-4.4.10.jar
        | | | jackson-annotations-2.9.0.jar
        | | | jackson-core-2.9.6.jar
        | | | jackson-databind-2.9.6.jar
        | | | jackson-dataformat-xml-2.9.6.jar
        | | | jackson-dataformat-yaml-2.9.6.jar
        | | | jackson-module-jaxb-annotations-2.9.6.jar
        | | | javax.servlet-api-3.1.0.jar
        | | | jaxb-api-2.3.0.jar
        | | | jaxb-utils-1.0.jar
        | | | jcommander-1.72.jar
        | | | jetty-http-9.4.11.v20180605.jar
        | | | jetty-io-9.4.11.v20180605.jar
        | | | jetty-server-9.4.11.v20180605.jar
        | | | jetty-util-9.4.11.v20180605.jar
        | | | log4j-1.2.17.jar
        | | | opencsv-4.2.jar
        | | | properties-2.0.RC5.jar
        | | | slf4j-api-1.7.25.jar
        | | | slf4j-log4j12-1.7.25.jar
        | | | snakeyaml-1.18.jar
        | | | stax2-api-3.1.4.jar
        | | | tika-core-1.18.jar
        | | | woodstox-core-5.0.3.jar
        | | |
        | | \—config
        | | jetty-logging.properties
        | | log4j.properties
        | |
        | \—plugins
        | | README.txt
        | |
        | +—behaviors-plugin
        | | | allure-plugin.yml
        | | | plugin.jar
        | | |
        | | \—static
        | | index.js
        | |
        | +—custom-logo-plugin
        | | | allure-plugin.yml
        | | |
        | | \—static
        | | custom-logo.svg
        | | styles.css
        | |
        | +—junit-xml-plugin
        | | allure-plugin.yml
        | | junit-xml-plugin-2.7.0.jar
        | |
        | +—packages-plugin
        | | | allure-plugin.yml
        | | | plugin.jar
        | | |
        | | \—static
        | | index.js
        | |
        | +—screen-diff-plugin
        | | | allure-plugin.yml
        | | |
        | | \—static
        | | index.js
        | | styles.css
        | |
        | +—trx-plugin
        | | allure-plugin.yml
        | | trx-plugin-2.7.0.jar
        | |
        | +—xctest-plugin
        | | | allure-plugin.yml
        | | | xctest-plugin-2.7.0.jar
        | | |
        | | \—lib
        | | xmlwise-1.2.11.jar
        | |
        | \—xunit-xml-plugin
        | allure-plugin.yml
        | xunit-xml-plugin-2.7.0.jar
        |
        \—__pycache__
        lost_hat_smoke_tests.cpython-36.pyc

        Avatar Katarzyna Kusiak

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *