gpt4 book ai didi

python-3.x - 从 tox 运行时无法找到 fixture "mocker"(pytest-mock)

转载 作者:行者123 更新时间:2023-12-04 08:44:06 25 4
gpt4 key购买 nike

我一直在用pytest-mock用于模拟 pytest 的库。当我尝试使用 tox 运行测试时命令,我收到以下错误:

...
tests/test_cli.py ....EEEE
...
file /path/to/test_cli.py, line 63
def test_cli_with_init_cmd_fails_with_db_error(runner, mocker, context):
E fixture 'mocker' not found
> available fixtures: cache, capfd, capfdbinary, caplog, capsys, capsysbinary, context, cov, doctest_namespace, fs, monkeypatch, no_cover, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, requests_mock, runner, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory
> use 'pytest --fixtures [testpath]' for help on them.
但是,当我尝试在我的 venv 中直接使用 pytest 运行测试时,一切都按预期进行。 $ py.test --cov esmigrate --cov-report term-missing
...
platform linux -- Python 3.8.5, pytest-6.1.1, py-1.9.0, pluggy-0.13.1
rootdir: /path/to/project/root, configfile: tox.ini
plugins: cov-2.10.1, pyfakefs-4.0.2, mock-3.3.1, requests-mock-1.8.0
collected 50 items

tests/test_cli.py ........ [ 16%]
tests/test_contexts/test_context_config.py ... [ 22%]
tests/test_internals/test_db_manager.py .......... [ 42%]
tests/test_internals/test_glob_loader.py ..... [ 52%]
tests/test_internals/test_http_handler.py ....... [ 66%]
tests/test_internals/test_script_parser.py ................. [100%]
...
这很奇怪,因为我添加了 pytest-mock在我的 requirements.txt文件,用于在 venv 中安装依赖项,我也将此文件添加为 tox testenv 的依赖项。这是我 tox.ini的内容文件。
[tox]
envlist=py36, py37, py38, flake8

[pytest]
filterwarnings =
error::DeprecationWarning
error::PendingDeprecationWarning

[flake8]
max-line-length = 120
select = B,C,E,F,W,T4,B9,B950
ignore = E203,E266,E501,W503,D1

[testenv]
passenv=USERNAME
commands=py.test --cov esmigrate {posargs} --cov-report term-missing
deps= -rrequirements.txt

[testenv:flake8]
basepython = python3.8
deps =
flake8
commands =
flake8 esmigrate tests
requirements.txt 的快照文件
...
pyfakefs==4.0.2
pyparsing==2.4.7
pyrsistent==0.17.3
pytest==6.1.1
pytest-cov==2.10.1
pytest-mock==3.3.1
PyYAML==5.3.1
...
travis-ci 运行时,这不会导致任何问题要么,但我想知道这里的问题是什么以及我做错了什么。 tox-env 是否无法安装 pytest-mock,或者“mocker”装置是否被其他东西遮住了?

最佳答案

tox 当前(尽管计划在(撰写本文时)当前重写中对此进行改进)不会重新创建环境,如果它不管理更改的文件(例如 requirements.txt/setup.py)
相关问题可以看我的question and workarounds
这里的核心问题是,如果您没有直接在 tox.ini 中内联管理 tox 环境依赖项|它不会注意到更改(例如从 requirements.txt 中添加/删除依赖项),因此您需要使用 --recreate 运行 tox反射(reflect)这些变化的标志

免责声明:我是当前的 tox 维护者之一

关于python-3.x - 从 tox 运行时无法找到 fixture "mocker"(pytest-mock),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64417559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com