Ten kurs jest częścią Programu Podstawy Testów Automatycznych w Selenium i Python, o którym możesz poczytać tutaj Program Podstawy Testów Automatycznych w Selenium i Python.
Witaj w 4 części!
Wszystkie części Programu znajdziesz tutaj:
- cz. 1 – Twój pierwszy test automatyczny
- cz. 2 – Twój pierwszy zestaw testów
- cz. 3 – Sztuka znajdowania elementów – XPath
- 💎 tu jesteś: cz. 4 – Inteligentne czekanie i raporty
- cz. 5 – Profesjonalna konfiguracja projektu
- cz. 6 – Identyfikacja i neutralizowanie problemów z testami
Wstęp
Potrafimy już pisać proste testy GUI w oparciu o interakcje z elementami na stronie. Teraz przyszedł czas na rewizję i sprawdzenie 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 oraz będziemy w stanie profesjonalnie przedstawić wynik ich działania.
Co Cię czeka?
Zaczniemy intensywnie od zasymulowania ciekawej sytuacji, z którą 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ę z nowymi strukturami i instrukcjami, które pozwolą ogarnąć grupy elementów.
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:
- 👉 zrobimy duży refaktor i wprowadzimy obszerne zmiany – zasymulujemy rzeczy, jakie Cię spotkają w prawdziwym projekcie, przygotowaliśmy własne rozwiązanie specjalnie dla naszego kursu 😉
- 👉 zapoznamy się z podstawowymi elementami języka Python jakimi są Moduły i Pakiety,
- 👉 dowiemy się czym są testy typu Smoke i Sanity i przećwiczymy tworzenie takich testów,
- 👉 skorzystamy produktywnie z nowych konstrukcji języka Python – struktura
list
i instrukcjafor
orazif
, - 👉 opowiemy jak dobrze zarządzać dużą liczbą testów poprzez Test Suite,
- 👉 zapoznamy się bliżej z konsolą dostępną w PyCharm aby przyspieszyć naszą pracę,
- 👉 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, napiszemy własne rozwiązanie i porównamy je z dostępnymi w Selenium
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 (dostępny po zalogowaniu). Dzięki niemu w razie potrzeby będziemy mogli szybko przypomnieć sobie znaczenie różnych terminów 🙂
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 na stronie Q&A. Pełna informacja do czego uzyskasz dostęp po zakupie znajduje się na stronie Cennik.
Plan Podstawowy
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.
Jeśli wciąż go nie posiadasz: Kliknij Zapisz się! a zostaniesz przeniesiony do strony zapisu do członkostwa
Pingback: O serii - Podstawy Testów Automatycznych w Selenium i Python - Jak Testować?
Cześć,
Mam problem z uruchomieniem testu po instalacji allure. Mam taki błąd w konsoli
https://i.imgur.com/uaWrxBE.png
Jak rozwiązać problem ? W google nic nie znalazlam poza info że to bug 🙂
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 🙂
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
Tip: do wygenerowania struktury katalogów możesz użyć polecenia:
tree /f /a
Dodatkowo polecenie
tree /f /a > tree.txt
zapisze do plikutree.txt
całe drzewo katalogów 😉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
Hej, pozwolę sobie przerzucić ten problem na forum, aby tam kontynuować dyskusję i rozwiązywanie problemu 🙂
Problem z uruchomieniem testu po instalacji allure