问题标签 [pytest-markers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
18224 浏览

python-3.x - PytestUnknownMarkWarning: Unknown pytest.mark.xxx - 这是一个错字吗?

我有一个名为 test.py 的文件,其中包含以下代码:

pytest -s test.py 通过但给出以下警告:

环境:Python 3.7.3、pytest 5.2.4、anaconda3

摆脱警告消息的最佳方法是什么?

0 投票
1 回答
1737 浏览

python-3.x - 如何根据pytest中的条件跳过测试?

下面是 的片段conftest.py,它接受命令行参数。

conftest.py

下面的片段是test.py

每当出现counter value not equal to 1ie,c1_1 != 1 (test_2)那么它应该跳过以下所有情况。可能我可以尝试在每个测试用例中检查这个条件,然后 pytest.skip or assert False. 但这不是一个好主意。

我尝试了标记pytest.mark.skipif,但在该标记内"can't access variable skip_all" (either "Test1.skip_all") I would like to skip tests based on certain condition.如果我的以下方法不正确,请帮助我以正确的方法根据条件跳过测试。

测试.py

我错过了什么吗?或与固定装置有关?这可能吗 ?谁能让我知道该怎么做?

在下面的示例中,我们如何使用可在 中访问的外部变量marker:skipif,而不是'sys.platform'

0 投票
0 回答
212 浏览

python-3.x - pytest - 使用自定义标记运行测试

我使用了定制的 pytest 标记,如下所示,

test_id是标记名称,“AB-1234”是值。从命令行如何使用标记 test_id==AB-1234 运行所有测试?我尝试了-m选项的不同变体,但找不到解决方案。

编辑:我试过pytest -m "AB-1234"了,但它运行了所有的测试。

0 投票
0 回答
160 浏览

pytest - 我们可以并行运行多个标记吗?

我有一个 python 脚本,并说我有 10 个测试用例。5个是marker1的一部分,另外5个是marker2的一部分。我想并行启动 2 个线程,以便 marker1 测试可以在 1 个线程中运行,而 marker2 测试可以在另一个线程中运行。而且我的执行时间减少了。

如果使用标记无法解决问题,请建议我如何并行运行 5 个链接测试和另外 5 个并行测试。

0 投票
1 回答
151 浏览

python - pytest:是否可以从代码中启用标记?

-m调用 pytest 时可以使用参数仅运行由某个标记标记的测试。

例如pytest -m testsubset_a

我想知道......是否也可以从代码内部启用这些标记之一?例如,在某处pytest_collection_modifyitems()

我问的原因是因为我正在开发一个测试工具,它将使用 pytest 标记来启用特定的测试子集,但过去没有这样做。由于我们希望向后兼容,因此我想在未-m给出参数时启用默认子集(标记)。

0 投票
1 回答
273 浏览

python - 使用一组标记运行测试,这些标记基于命令行参数的值选择

我有以下测试:

目标:如果我在命令行参数上指定: pytest --device device1 ,我希望只运行带有标记 feature1、feature2、hardware 的测试。类似地:参数 device2 只会调用带有标记 hardware 和 feature1 等的测试。如果没有参数,将运行没有标记的测试。

在 conftest.py 我有:

我发现这pytest_collection_modifyitems可能会有所帮助,但我不知道如何根据命令行参数的值选择要运行的标记列表。提前感谢您的帮助。

我试过了,但没有奏效:

0 投票
1 回答
472 浏览

python - 根据命令行参数运行 pytest 标记

我有一个 python 文件,它从配置文件中读取并初始化某些变量,然后是一些由 pytest 标记定义的测试用例。

我通过调用这些标记并行运行不同的测试用例集,如下所示 -pytest -m "markername" -n 3

现在的问题是,我没有一个配置文件了。有多个配置文件,我需要在执行期间从命令行获取用于测试用例的配置文件的方法。

我试过什么?

我将配置文件的读取包装到一个带有 conf 参数的函数中。

我添加了一个文件,使用 pytest addoptionconftest.py添加了一个命令行选项。conf

然后尝试了这个pytest -q --conf="configABC" -m "markername",希望我可以读取该配置文件以初始化某些参数并将其传递给包含给定标记的测试用例。但是什么都没有发生,我想知道...我想知道如何...我想知道为什么...

如果我运行pytest -q --conf="configABC",则读取配置文件,但所有测试用例都在运行。

但是,我只需要运行使用通过我从命令行获得的配置文件初始化的变量的特定测试用例。我想使用标记,因为我也在使用参数化并并行运行它们。如何从命令行获取要使用的配置文件?我把这搞砸了吗?

编辑1:

0 投票
0 回答
34 浏览

python - 无法使用命令 -pytest -s -v --alluredir=./reports ./tests 从 pytest 文件夹运行完整的测试套件

我有 pytest,它链接了标记 smoke 和 testrail 测试用例如果提供标记,例如 pytest -s -v --alluredir=./reports ./tests -m smoke 那么只有它正在执行所有测试用例。

如果我想使用此命令从文件夹运行 -pytest -s -v --alluredir=./reports ./tests 。那么它会给出以下错误。只需启动浏览器并失败所有测试用例

如果我通过右键单击它来运行单个测试用例,那么我能够成功运行。我有这个文件夹下的所有测试类 ./tests

我只是想知道为什么它没有从没有标记的文件夹中运行测试。pytest的标记有什么问题吗?

为了确定测试未运行的原因,我还检查了以下内容:

验证所有带有测试用例的文件都以“test_”开头。验证所有测试用例名称是否也以“test_”开头。验证您是否已在根目录中创建了 pytest.ini 文件。验证您在项目的所有目录/子目录中是否有init .py 文件。

(venv) C:\Projects\Tests\MyAutomation>pytest -s -v --alluredir=./reports ./tests ====================== =========================================== 测试会话开始===== ==================================================== ==========

tests/test_class1_cases.py::TestCasesClass::test_submit_dob DevTools 监听 ws://127.0.0.1:53051/devtools/browser/bd4bb813-c2f6-4987-b169-dfe5a9765128 错误测试/test_submit_dob.py::testrail PASSED

] [17:34:19.552] USB:usb_device_handle_win.cc:1048 无法从节点连接读取描述符:连接到系统的设备无法正常工作。(0x1F) [10268:9972:1007/173419.562:ERROR:chrome_browser_main_extra_parts_metrics.cc(228)] crbug.com/1216328:开始检查蓝牙可用性。请

==================================================== ===================== 错误 ============================ ============================================

请求 = <SubRequest 'fixture_create_driver_session' for >

conftest.py:80: AttributeError ------------------------------- ---------------------- 捕获的日志设置 ------------- ----------------------------------------- INFO root:web_driver_factory.py:38 初始化chrome 的 webdriver DEBUG root:utils.py:204 Chromedriver 已经安装。

0 投票
1 回答
40 浏览

python - pytest 收集测试用例但不执行脚本

在此处输入图像描述

我正在尝试运行这样的 pytest 脚本:

pytest myfile.py -m marker_name -v -s --disable-warnings

pytest.ini 包含标记名称为:

但我得到了上述输出。标记似乎已被收集,但已取消选择。任何人都可以对此提供任何见解吗?

0 投票
1 回答
99 浏览

pytest - 使用 pytest 运行依赖测试

使用 pytest,我正在使用 library 设置依赖项pytest-dependency。我还在这些测试中添加了标记。这是一个ECM:

使用pytest.ini文件设置标记:

当我尝试使用标记运行测试时,因为它取决于test_a哪个没有标记category,所以它被跳过:

由于依赖关系,有没有办法强制运行。test_a一个解决方案是将标记添加到第一个测试中,但对于我正在处理的情况来说会很复杂......

编辑@MrBean Bremen:我做了一个依赖方案的例子 方案 如果我想在测试中添加一个标记,我必须把这个标记放在所有的分支上,并且“根”会有很多标记。不是做起来复杂,而是繁琐。