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