问题标签 [conftest]

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 投票
1 回答
1286 浏览

python-3.x - 如何将“conftest,py”中的参数传递给测试文件(pytest)?

如何将参数从文件传递conftest.pytest文件?

conftest.py

test.py,我需要访问所有这些参数a,b & c。我怎样才能做到这一点 ?

测试.py

我是pytest的新手。你能帮我么 ?

0 投票
3 回答
671 浏览

python - 如何仅将 conftest.py 中的夹具应用到内部文件夹

我有一个位于 conftest.py 中的夹具。

结构如下:

我希望该夹具仅在内部文件夹测试脚本中自动使用:在test_first_1.pytest_first_2.pytest_second_1.py中,但不在 test_common_1.py中。

我可以在每个内部文件夹中使用该夹具创建 conftest,但我不想复制代码

有什么方法可以将 conftest 中的夹具应用到内部文件夹中的测试脚本并在公共文件夹测试脚本中忽略它?

0 投票
0 回答
460 浏览

python - 有没有办法使用与 argparse 模块相同的语法向 pytest 添加自定义 CLI 参数?

TLDR:

我想扩展 pytest 的 cli,我知道如何使用他们自己的 API 来完成,但我只是想知道是否有办法直接使用 argparse 模块(或至少它的语法),因为我已经拥有了所有我想为程序的另一部分添加以标准 argparse 模块的语法编写的 cli 参数。

完整问题:

我有大约 20 个 CLI(命令行界面)参数/标志/选项,我希望能够在标准 python 模块中以及通过调用 pytest 运行测试时接受这些参数/标志/选项。

我已经有了标准的 python 模块设置来接受我需要的所有 CLI 参数,使用 argparse 模块使用语法,如argparse 文档示例中所示:

我也知道您可以使用此处conftest.py描述的语法创建自定义的附加 CLI 参数以与 pytest 一起使用:

对于使用 argparse 与 pytest 初始化/创建自定义 CLI 参数,我知道只有一个细微差别。解析:

测试:

对于稍后解析/访问参数及其各自的值,会有更多的区别。我讨厌不得不再次重复几乎完全相同的代码来为 pytest 设置所有 20 个自定义 CLI 参数,而且我相信 pytest 现在在幕后使用 argparse,所以我想知道是否有一种能够重用代码的好方法我已经编写了使用 argparse 模块为 pytest 设置自定义 CLI 参数的 CLI 参数。如果还有一种方法可以重用解析/访问代码,那就太棒了!

我尝试conftest.py直接使用 argparse 模块,并以与标准 python 模块相同的方式执行所有操作,但这不适用于 pytest。我还使用了 allure 报告模块,它向 pytest 添加了自己的自定义 CLI 参数,当我使用上述方法时,它不再识别 allure 自定义 CLI 参数,可能是因为我正在重新定义/覆盖现有的 argparse CLI 参数集.

也许有一种方法可以访问 pytest 使用的底层 argparse.ArgumentParser 实例?

我还考虑过创建一个包装类来包装 pytest 解析器并添加一个与标准 argparse 函数同名的附加函数,它只是调用底层重命名函数,但我不完全确定如何实现它,而且没有解决稍后解析参数的问题。

可能相关链接: pytest Config 类文档 pytest Parser 类文档

0 投票
0 回答
329 浏览

python-3.x - 在 PyTest 中,如何指定要使用的不同 conftest.py 文件?

我将 Python3.8 与 PyTest 一起使用。默认情况下,pytest 使用

构建和导入固定装置。是否可以启动 pytest 并使用不同的文件来加载夹具 - 即指定除 conftest.py 之外的不同文件?

0 投票
1 回答
712 浏览

python-3.x - 如何从命令行激活 PyTest 夹具?

我正在使用 Python3.8 和 pytest。如何根据某些命令行规范为我的会话激活夹具?现在我有一个 tests/conftest.py 文件,其中包括

但我只希望会话中包含某些固定装置,并且我希望能够在 pytest.ini 文件中或通过传递给 pytest 的命令行参数指定它。我怎么做?

编辑:这是我的用例...

如果启用了命令行选项,我想依赖一个夹具

但是如果没有启用命令行,我想依赖另一个夹具......

0 投票
2 回答
4660 浏览

python-3.x - 当我尝试创建自定义命令行选项时,为什么 pytest 会出现“无法识别的选项”错误?

我正在使用 Python 3.8 和 pytest 6.0.1。如何为 pytest 创建自定义命令行选项?我认为这就像将它添加到 conftest.py 一样简单......

但是当我 pytest 时,我得到一个无法识别的选项错误

添加自定义选项的正确方法是什么?

编辑:我尝试了给出的答案。我在我的 tests/conftest.py 文件中包含了一些其他的东西,以防这些是答案不起作用的原因。文件包含

但是运行时的输出是

0 投票
0 回答
93 浏览

python-3.x - 如何像在命令行上一样在 VSCode 中运行单个测试?

我将 Visual Studio Code 1.39.2 和 PyTest 6 与 Python 3.8 一起使用。我有这个 pytest.ini 文件

下面我在我的 conftest.py 文件的顶部有这个......

但是,仅在 Visual Studio Code 中,当我尝试运行测试时,通过单击编辑器中的“运行测试”或“调试测试”链接...

在此处输入图像描述

测试在上面的最后一行终止......

出现以下错误....

如果我在命令行上自行运行测试,则不会发生这种情况......

VS Code 是否以不同的方式加载插件,或者是否需要清除一些缓存数据才能像命令行一样工作?

0 投票
1 回答
95 浏览

pycharm - IDE 无法将 conftest.py 识别为 python 文件

我有一个带有测试和 conftest 文件的 python 项目,几天前 - 不知从何而来 - Pycharm 决定它不是 python 脚本:

在此处输入图像描述

结果是我无法调试,无法跳转到源码,没有检查和分机。

此外 - 如果我将名称更改为不同的名称,突然之间它又是一个 python 脚本:

在此处输入图像描述

为什么会这样?谁能告诉?我搜索了提及的设置,conftest但一无所获。我该如何解决?

0 投票
1 回答
1082 浏览

open-policy-agent - 将 opa http.send 与 conftest 一起使用

我在使用conftest时对数据导入和内置 opa 函数的执行有疑问。在下面的代码示例中,我有两个模块abcmain. 我方便地省略了一些设置abc,重要的是它是一个有效的 https 调用。

从 repl 中工作,我的代码完全按照我的预期执行,即时获取数据available并检查是否stuff在该列表中。opa run -b . 然后点击data.abc执行 https 调用,即我可以看到数据包离开我的界面,并且包含我需要的列表的响应正文被拉入。然后我从deny. 运行时也会发生同样的事情opa test . -v

然而,运行conftest verify -p . conftest test abc/main.json -p .从不执行http.send,即数据包永远不会离开我的预期主机接口。

我可以使用静态列表而不是使用 https 调用,但我无法控制列表何时更新。这是 conftest 的预期/预期限制吗?我可以执行这些函数来构建我的数据文档并且我是否正确导入它?

0 投票
1 回答
304 浏览

python - 有没有办法自定义从 conftest.py 登录 pytest 的格式

我是 pytest 新手,正在尝试设置日志记录

我的 conftest.py 文件中有以下代码

另一个文件 logger.py

关于写作Log.info("message")

我看到日志写为
00:16.748 inf logfile_00_00_13_10_2020.log: message

不确定如何或在何处定义此格式。

我们可以将其自定义为类似的格式吗

log_file_format = %(levelname)s: %(asctime)s (%(filename)s:%(lineno)s %(message)s)

信息:2020-10-13 00:00:45 (.py:<line_no>) 消息

应该在哪里定义这个?