Pytest没有在Poetry项目中找到我的测试(VSCode发现)



我刚刚使用常用的poetry new mypackage命令使用Poetry创建了我的第一个Python包。我的问题是,pytest不执行任何测试,当我运行它。我正在使用VSCode进行开发,奇怪的行为是VSCode成功地找到并执行了我的测试。

诗歌创建了一个名为mypackage和另一个名为tests的子目录。我的测试文件名为tests/test_mypackage.py

VSCode自动发现测试,并在test选项卡中显示它们。.vscode/settings.json文件有如下配置:

"python.testing.pytestArgs": [
"tests"
],
我尝试了以下命令来执行pytest:
  1. 我的venv手动激活:
    1. pytest
    2. pytest tests
    3. pytest tests/test_mypackage.py
    4. cd tests;pytest test_mypackage.py
  2. 没有激活我的venv:
    1. poetry run pytest
    2. poetry run pytest tests

行为总是相同的:什么也没发生,好像pytest无法检测到任何要运行的东西。

我一直使用VSCode来运行测试,但是现在我想把代码放在持续集成下。如何运行pytest来验证我的包?

UPDATE:从虚拟env内部运行pytest时不打印任何输出,但它的返回代码是1。

pytest在激活的虚拟环境中运行时仍然不工作,但我发现我可以运行:

poetry run pytest 

我还是不明白为什么即使激活了venv,直接从命令行运行也找不到测试。

诗歌不需要激活venv。命令应该可以工作:

poetry run pytest

但是,您可以激活venv(使用poetry shell)并只运行pytest

对于测试资源管理器,我认为这仍在开发中,官方,只支持Pytest和Unittest,但VSCode建议一个变量来支持诗歌。

以下是对我有效的配置:

{
"python.testing.cwd": ".",
"python.poetryPath": ".venv/bin/poetry",
"python.testing.pytestEnabled": true,
"python.testing.pytestPath": ".venv/bin/pytest",
"python.analysis.typeCheckingMode": "basic",
"python.testing.pytestArgs": [
"${workspaceFolder}",
"--rootdir=${workspaceFolder}"
],
"python.testing.unittestEnabled": false,
}

如果您还需要使用环境变量,请在.env文件中设置它们(最好是.env.test,但我无法弄清楚)。