#python #python-3.x #pytest
#python #python-3.x #pytest
Вопрос:
Я проверил эту проблему на нескольких сообщениях, и я думаю, что все требования выполнены, но pytest по-прежнему не находит тестов.
Вызывается мой тестовый класс test_login.py
Его содержимое:
class TestLogin:
def test_login_success(self, driver, messages, log):
login = LoginPage(driver)
login.enter_email("Mark")
login.enter_password("Passw0rd")
login.click_login()
log.info("Login clicked")
assert messages['login_page_title'] == driver.title,
f"Expected: {messages['login_page_title']}nActual: {driver.title}"
Я запускаю его из корневого каталога, в котором есть pytest.ini со следующим содержимым:
[pytest]
addopts = --strict-markers -v
markers =
feature: Deep validation of the application
и conftest.py с определенными приспособлениями, используемыми в тесте.
В каждом каталоге проекта есть __init__.py
файл
Когда я запускаю тест, я получаю:
================================================================ test session starts ================================================================
platform darwin -- Python 3.8.5, pytest-5.2.1, py-1.8.0, pluggy-0.13.0 -- /Users/mark/Python_Auto_Framework/com/companyname/venv/bin/python3
cachedir: .pytest_cache
rootdir: /Users/mark/Python_Auto_Framework, inifile: pytest.ini
plugins: testrail-e2e-2.0.0, xdist-1.30.0, bdd-3.2.1, forked-1.1.1, docker-compose-3.2.0, cov-2.8.1
collected 0 items
=============================================================== no tests ran in 0.04s ===============================================================
Когда я пытаюсь запустить тест, напрямую ссылаясь на него следующим образом:
pytest com/companyname/Tests/test_login.py::test_login_success
Я получаю:
================================================================ test session starts ================================================================
platform darwin -- Python 3.8.5, pytest-5.2.1, py-1.8.0, pluggy-0.13.0 -- /Users/mark/Python_Auto_Framework/com/companyname/venv/bin/python3
cachedir: .pytest_cache
rootdir: /Users/mark/Python_Auto_Framework, inifile: pytest.ini
plugins: testrail-e2e-2.0.0, xdist-1.30.0, bdd-3.2.1, forked-1.1.1, docker-compose-3.2.0, cov-2.8.1
collected 0 items
=============================================================== no tests ran in 0.02s ===============================================================
ERROR: not found:
/Users/mark/Python_Auto_Framework/com/companyname/Tests/test_login.py::test_login_success
(no name '/Users/mark/Python_Auto_Framework/com/companyname/Tests/test_login.py::test_login_success' in any of [<Module test_login.py>])
Кто-нибудь может сказать мне, чего мне не хватает?
Обновление: я запустил с —debug и заглянул в файл pytestdebug, и я увидел следующее:
matched test file
'/Users/mark/Python_Auto_Framework/com/companyname/Tests/test_login.py'
[assertion]
found cached rewritten pyc for '/Users/mark/Python_Auto_Framework/com/companyname/Tests/test_login.py' [assertion]
early skip of rewriting module: Pages [assertion]
early skip of rewriting module: Pages.LoginPage [assertion]
early skip of rewriting module: Core [assertion]
early skip of rewriting module: Core.Utils [assertion]
Но рекурсивный поиск по всем каталогам для скомпилированной копии ничего не показывает
Комментарии:
1. Если вы ссылаетесь на тест напрямую, вам также необходимо добавить класс test, например
test_login.py::TestLogin::test_login_success
.2. ОШИБКА: не найдено: /Users/markdevine/IdeaProjects/Python_Auto_Framework/com/companyname/Tests/test_login.py::TestLogin:: test_login_success (без имени ‘/Users/mark/Python_Auto_Framework/com/companyname/Tests/test_login.py::TestLogin::test_login_success » в любом из [<Модуль test_login.py >])
3. Попробуйте запустить
python -m pytest
из корневого пути вашего проекта (не уверен, какой именно).4. python -m pytest также не находит тестов
5. Можете ли вы повторить попытку переименования вашего тестового каталога из
Test
вtest
? И убедитесь, что этот каталог содержит__init__.py
.
Ответ №1:
Попробуйте добавить файл pytest.ini в корневой каталог и добавьте имена каталогов (которые содержат ваши тестовые наборы) в testpaths. Ниже приведен пример:
pytest.ini
[pytest]
testpaths = Tests
Комментарии:
1. У меня был pytest.ini в корневом каталоге. Я добавил тестовые пути с путем к тестам (testpaths = com/companyname/Tests) и без (testpaths = Tests). Ни один из них не сработал
2. похоже, ваши тестовые наборы находятся в каталоге
tests
. Добавьте файлtestpaths = tests
inpytest.ini
. Это должно работать3. Я всегда обновляю ini при обновлении в соответствии с комментариями. Никакой радости