python 如何从VS代码测试运行器接口运行不同的Pytest参数或标记?

u0njafvf  于 2023-01-19  发布在  Python
关注(0)|答案(2)|浏览(118)

我在让VS Code PyTest代码运行器按照我想要的方式工作时遇到了麻烦。看起来pytest选项可能是一个全有或全无的情况。
有没有办法在VS Code界面中轻松地运行不同的PyTest选项集?
例如:

  • 默认情况下,运行所有未标记为@pytest.mark.slow的测试。
  • 这可以通过参数-m "not slow"来完成
  • 但是,如果我把它放在一个pytest.ini文件中,那么它永远不会运行任何标记为慢的测试,即使我在接口中选择特定的测试并试图运行它,结果输出是collected 1 item... 1 item deselected
  • 有时在启用覆盖范围的情况下运行,有时不启用覆盖范围。

我能看到的唯一方法是从命令行运行PyTest,这样就失去了自动发现、从内联界面运行/调试单个测试等优点。
我错过了什么?

  • 注意:当前使用的是VS代码1.45.1、Python 3.7.6和PyTest 5.3.5 *
but5z9lq

but5z9lq1#

您没有遗漏任何内容。目前还没有一种方法可以提供每次执行的参数来获得您想要的与测试资源管理器的集成。

py49o6xq

py49o6xq2#

你不能直接在测试界面中完成这项工作(截至2023年1月),但是你可以使用命令行参数或者在终端运行的单独脚本来完成这项工作。
因此,它迫使您记住pytest命令行界面的某些部分,或者编写脚本以在不同用例中完全按照您想要的方式运行pytest,但这是迄今为止我在不更新vs代码或扩展的情况下找到的最好的方法,然而,我不知道如何用这些运行的结果更新测试资源管理器界面。
例如,您可以将以下代码放入pytest.ini文件中,这将设置所有的覆盖率标志,但是默认情况下运行时没有启用覆盖率,但是仅仅添加--cov标志将运行所有具有覆盖率的测试:
pytest.ini

[pytest]
minversion = 6.0
python_files = test*.py
python_classes = Test
python_functions = test_* *_test
testpaths = ./
addopts = --cov-branch --cov-report html --cov-report xml:coverage.xml --cov-report term --ignore=<folder to ignore when discovering tests>

根据上述内容,如果运行:

  • pytest

在repo根目录的终端,pytest将运行所有没有coverage的测试,但是使用:

  • pytest --cov

它也将包含覆盖率,应用ini文件中addopts属性中的所有覆盖率标志。这假定您已经安装并配置了所有适用于覆盖率的插件和文件。
类似地,可以使用其他pytest命令行参数来只运行特定的测试文件标记、文件夹等,或者创建bash脚本,以便将不同类型的测试或子套件合并到特定的命令中。

相关问题