pytest не находит тестов

#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 in pytest.ini . Это должно работать

3. Я всегда обновляю ini при обновлении в соответствии с комментариями. Никакой радости