问题标签 [pytest]
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.
python - 在 pytest_generate_tests 函数中使用 funcarg 值
我是 py.test 的新手,我正在使用 funargs 在执行测试之前生成一些测试数据。我想让 pytest_generate 钩子使用 funcargs 值并将其传递给测试函数。例如,我有一个函数“do_something”,它查询数据库中给定的一组参数并相应地设置用户的环境。考虑到我们有一个多站点设置,我想在执行测试之前确保数据库具有执行测试的条目。
理想情况下。我想遍历这些值并将它们传递给我的测试函数。我怎样才能做到这一点?
目前我正在这样做:
现在,这行得通。但是每次我添加一个测试用例时,我都需要更新 generate_test 钩子。我在想可能有更简单的方法来做到这一点?
python - pytest 'ImportError: No module named YadaYadaYada' 的 PATH 问题
我使用 easy_install 在 Mac 上安装 pytest 并开始为具有如下文件结构的项目编写测试:
在 repo 目录中运行py.test
,一切都如你所料
但是当我在 linux 或 windows 上尝试同样的事情时(两者都有 pytest 2.2.3),每当它从我的应用程序路径中第一次导入某些东西时,它就会吠叫。比如说from app import some_def_in_app
我是否需要编辑我的 PATH 才能在这些系统上运行 py.test?有没有人经历过这个?
python - py.test 运行 Python2 和 Python3
我编写了一个包(http://github.com/anntzer/parsedcmd),它可以同时运行 Python2 和 Python3。但是,我不得不为 Python2 和 Python3 编写单独的 (py.test) 单元测试(主要是因为我想测试 Python3 的额外功能,特别是仅关键字参数),所以我在子包中有 atest_py2.py
和 a 。现在,如果我运行,比如说,通过,但失败了。同样,对于,通过但失败(尽管我可以使这个工作,这只是移至的问题)。test_py3.py
test
py.test2 mypkg
test_py2
test_py3
SyntaxError
py.test3 mypkg
test_py3
test_py2
StringIO
io
我可以设计test
子包,以便import mypkg.test
只导入正确版本的测试,但显然 py.test 并不关心——它只看到两个匹配的文件test_*
并抓取它们中的所有测试,而忽略__init__.py
告诉他导入的内容。
所以现在我必须同时做py.test2 mypkg/test/test_py2.py
和py.test3 mypkg/test/test_py3.py
。有没有办法设置整个事情,以便py.test2 mypkg
“py.test3 mypkg
正常工作”?
谢谢。
python - 如果另一个测试因 py.test 失败,我该如何跳过测试?
假设我有这些测试功能:
如何确保 test_function_two 仅在 test_function_one 通过时运行(我希望它是可能的)?
编辑: 我需要这个,因为测试二正在使用测试一验证的属性。
python - pytest 自动化显然在测试收集阶段运行测试
使用 pytest 和 selenium 运行 webui 自动化测试;有一个问题,我的测试似乎在收集阶段实际上正在运行。在这个阶段,我希望 pytest 能够收集测试——而不是运行它们。最终结果是我得到了 6 个测试结果,而我预计是 2 个。现在有趣的是,这 6 个结果只出现在 HTML 报告中;在命令行上,我只得到预期的 2 行输出(但运行这两个测试需要 300 秒,因为测试实际上是多次运行)。
测试/test_datadriven.py
数据/data.py
完整源代码可在 github 获得;https://github.com/eanxgeek/katello_challenge
有人知道这里可能发生什么吗?我正在使用 pytest-mozwebqa 插件、pytests 和 selenium。
谢谢!
python - pylint 在 py.test 上抱怨:“模块 'pytest' 没有 'raises' 成员”
使用以下代码:
如果我在上面运行 pylint,它会抱怨“raises”不是模块 pytest 的成员:
这显然不是真的。知道为什么 pylint 会犯这样的错误吗?这是一个已知的错误?
py.test 版本:
PyLint 版本:
python - 我可以在哪个 py.test 标注中找到“项目”和“报告”数据?
pytest_runtest_makereport() 获取两个参数,item 和 call。从 item 中,我可以找到为此测试创建的 funcarg,从 call 中,我可以找到异常信息(如果有):
不幸的是,excinfo 被填充为失败和跳过。为了区分,我需要查看 pytest_report_teststatus() 的报告参数:
这是很好的信息,但我无法将它与我为测试创建的 funcarg 相关联。我查看了报告参数(TestReport 报告),但找不到任何方法来返回传递给 pytest_runtest_makereport() 或我创建的 funcarg 的项目。
我在哪里可以访问两者?
python - 尝试运行 py.test 时收集 setup.py 时出错?
我试图py.test
在我的包上运行,但它试图setup.py
从项目根目录中解析,即使我试图排除它。
我需要从 *.py 文件中收集测试,因为测试类包含在模块中。
仍然当我运行py.test
它会给我ERROR collecting setup.py
我已经排除的。
python - 如何使用 tox 和 py.test 将单元测试限制在支持的平台上?
我确实有一个小的 python 包teno,我想让它在各种 python 版本上运行、测试和安装,从 2.5 开始到 3.2 结束
我需要 2.5 支持,因为我们仍然有机器运行它并且还不能升级。
目前,单元测试包含在模块中,这使得当您更改模块并运行它们时更容易更新它们,因为main将运行测试。
某些模块并非在所有平台上都可用。
Tox 配置为py.test
在所有平台上运行,但[pytest]
from 部分仍配置为在所有文件setup.cfg
中查找测试。*.py
这带来了一个问题:其中一些文件不应该在上面运行,py25
并且不可能为此调整它们。
我正在寻找一种配置,它可以让我指定为某些平台加载(或更好地排除)哪些模块。
期望的行为是能够在所有受支持的 python 版本上安装这个包。(显然应该跳过几个模块)。
python - pytest 是否支持“默认”标记?
我正在使用 pytest 来测试嵌入式系统的 python 模型。要测试的功能因平台而异。(在这种情况下,我使用“平台”来表示嵌入式系统类型,而不是操作系统类型)。
组织我的测试最直接的方法是根据平台类型将它们分配到目录中。
pytest /平台1
这很快变得难以支持,因为许多功能跨平台重叠。从那以后,我将测试移到了一个目录中,每个功能区域的测试都分配给了一个文件名(例如 test_functionalityA.py)。然后我使用 pytest 标记来指示文件中的哪些测试适用于给定平台。
虽然我很想让'conftest' 自动检测平台类型并只运行适当的测试,但我已经让自己指定在命令行上运行哪些测试。
pytest -m "(platform1 或 all_platforms)"
问题:(终于!)
有没有办法简化事情并让 pytest 默认运行所有未标记的测试,另外所有通过命令行上的“-m”通过的测试?
例如:pytest -m "platform1"
会运行标记为@pytest.mark.platform1 的测试以及标记为@pytest.mark.all_platforms 的所有测试,甚至是根本没有@pytest.mark 的所有测试?
鉴于大量共享功能,能够删除 @pytest.mark.all_platforms 行将是一个很大的帮助。