我刚刚使用常用的poetry new mypackage
命令使用Poetry创建了我的第一个Python包。我的问题是,pytest
不执行任何测试,当我运行它。我正在使用VSCode进行开发,奇怪的行为是VSCode成功地找到并执行了我的测试。
诗歌创建了一个名为mypackage
和另一个名为tests
的子目录。我的测试文件名为tests/test_mypackage.py
。
VSCode自动发现测试,并在test选项卡中显示它们。.vscode/settings.json
文件有如下配置:
"python.testing.pytestArgs": [
"tests"
],
我尝试了以下命令来执行pytest:
- 我的venv手动激活:
pytest
pytest tests
pytest tests/test_mypackage.py
cd tests;pytest test_mypackage.py
- 没有激活我的venv:
poetry run pytest
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
,但我无法弄清楚)。