Как запустить тест с командой "pytest" - PullRequest
0 голосов
/ 04 февраля 2020

Я импортировал pytest в свой тестовый файл и установил allure. Я добавил очарование в PATH. Я изменил каталог на свой тестовый файл в терминале, и когда я запускаю свой тест с этой командой "pytest -v -s test_1.py", эта ошибка возникает

Traceback (most recent call last):
  File "c:\users\user\appdata\local\programs\python\python38-32\lib\runpy.py", line 192, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\users\user\appdata\local\programs\python\python38-32\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\Scripts\pytest.exe\__main__.py", line 7, in <module>
  File "c:\users\user\appdata\local\programs\python\python38-32\lib\site-packages\_pytest\config\__init__.py", line 73, in main
    config = _prepareconfig(args, plugins)
  File "c:\users\user\appdata\local\programs\python\python38-32\lib\site-packages\_pytest\config\__init__.py", line 223, in _prepar
econfig
    return pluginmanager.hook.pytest_cmdline_parse(
  File "c:\users\user\appdata\local\programs\python\python38-32\lib\site-packages\pluggy\hooks.py", line 286, in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
  File "c:\users\user\appdata\local\programs\python\python38-32\lib\site-packages\pluggy\manager.py", line 93, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "c:\users\user\appdata\local\programs\python\python38-32\lib\site-packages\pluggy\manager.py", line 84, in <lambda>
    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
  File "c:\users\user\appdata\local\programs\python\python38-32\lib\site-packages\pluggy\callers.py", line 203, in _multicall
    gen.send(outcome)
  File "c:\users\user\appdata\local\programs\python\python38-32\lib\site-packages\_pytest\helpconfig.py", line 89, in pytest_cmdlin
e_parse
    config = outcome.get_result()
  File "c:\users\user\appdata\local\programs\python\python38-32\lib\site-packages\pluggy\callers.py", line 80, in get_result
    raise ex[1].with_traceback(ex[2])
  File "c:\users\user\appdata\local\programs\python\python38-32\lib\site-packages\pluggy\callers.py", line 187, in _multicall
    res = hook_impl.function(*args)
  File "c:\users\user\appdata\local\programs\python\python38-32\lib\site-packages\_pytest\config\__init__.py", line 794, in pytest_
cmdline_parse
    self.parse(args)
  File "c:\users\user\appdata\local\programs\python\python38-32\lib\site-packages\_pytest\config\__init__.py", line 1000, in parse
    self._preparse(args, addopts=addopts)
  File "c:\users\user\appdata\local\programs\python\python38-32\lib\site-packages\_pytest\config\__init__.py", line 948, in _prepar
se
    self.pluginmanager.load_setuptools_entrypoints("pytest11")
  File "c:\users\user\appdata\local\programs\python\python38-32\lib\site-packages\pluggy\manager.py", line 299, in load_setuptools_
entrypoints
    plugin = ep.load()
  File "c:\users\user\appdata\local\programs\python\python38-32\lib\importlib\metadata.py", line 75, in load
    module = import_module(match.group('module'))
  File "c:\users\user\appdata\local\programs\python\python38-32\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 970, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'allure.pytest_plugin'; 'allure' is not a package

1 Ответ

0 голосов
/ 04 февраля 2020

Вот пример запуска моей функции conftest.py, которая печатает «A» перед моей тестовой функцией, которая печатает «B».

cd в родительский каталог, для этого примера это py_tests и run.

pytest -s -v

Вывод:

A
setting up
B
PASSED

Со структурой каталогов:

py_tests
 -conftest.py
 -tests
  --tests.py

Файлы:

conftest.py

import pytest

@pytest.fixture(scope="function")
def print_one():
    print("\n")
    print("A")

test.py

import pytest

class Testonething:

    @pytest.fixture(scope="function", autouse=True)
    def setup(self, print_one):
        print("setting up")

    def test_one_thing(self):
        print("B")
        assert True
...