问题标签 [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.

0 投票
2 回答
6968 浏览

python - 在 /test 文件夹下使用 py.test 运行时出现“TypeError:‘模块’对象不可调用”

我有一个班级Foo住在Src/Projects/SomeProject/Foo.py

我有一堂课FooTest(unittest.TestCase),住在:

当我用 pytest 运行它时(我只是在 Src 中输入“py.test”来运行所有测试),我得到:

(我有并且from Foo import Foo在.FooTest.pyFoo.pysys.path

但是当我用 python 运行它时:python Src/Projects/SomeProject/tests/FooTest.py一切正常。)

此外,如果我只是将 FooTest.py 移动到Src/Projects/SomeProject然后使用 py.test 运行会突然起作用。

有任何想法吗?

0 投票
1 回答
1189 浏览

pytest - pytest 从父目录运行测试时如何在测试目录中找到 conftest.py 的输入文件

在 tests 目录中有 2 个子目录,例如 tests/api 和 tests/sanity。注意 tests/api 有 conftest.py 期望在 tests/api 目录中找到 input.conf。请注意,从 tests/api 运行测试可以正常工作。但是从父目录测试运行测试,它失败了:py.test --test_option=input.conf 用法:py.test [options] [file_or_dir] [file_or_dir] [...]

py.test:错误:没有这样的选项:--test_option

有人可以展示我如何构建我的测试,这样就可以了?我也尝试指定测试目录,如下所示,但找不到 input.conf。py.test --test_option=input.conf api/test_api.py

E IOError: [Errno 2] 没有这样的文件或目录:'input.conf'

0 投票
1 回答
715 浏览

optparse - py.test 在同一目录结构中不能有具有相同选项名称的 pytest_addoption

我有以下测试目录结构,每个都有自己的 conftest.py:

在 conftest.py 中,pytest_addoption 具有与 test_option 相同的选项条目:

parser.addoption("--test_option", dest="test_option", type="string", help="test_option")

在 tests/api/newapi 执行 py.test 有以下错误:

optparse.OptionConflictError:选项--test_option:冲突的选项字符串:--test_option

但是在 tests/api 或 tests 或 tests/sanity 执行 py.test 可以正常工作。如果父目录具有相同的选项名称,这是我必须想出一个新的选项名​​称的设计吗?

我希望我可以保持命名约定相同,因为有问题的选项用于测试的目的相同。目的是根据从哪个目录启动测试来改变测试的详细程度。

0 投票
1 回答
2917 浏览

python - 带有独立进程的nose2 vs py.test

我们一直在使用nosetest 来运行和收集我们的单元测试(它们都写成我们喜欢的python 单元测试)。我们喜欢鼻子的地方:

  • 使用标准的 python 单元测试(我们喜欢这种强加的结构)。
  • 支持在 xml 中报告覆盖率和测试输出(用于 jenkins)。

我们缺少的是一种在隔离进程中运行测试同时保持良好错误报告的好方法(我们正在通过 python 测试 C++ 库,因此段错误不应该是灾难性的)。鼻管似乎不再维护,我们遇到了一些问题。

我们正试图弄清楚我们是否应该 - 修复/使用 nosepipe - 切换到 nose2 并编写 nosepipe2。- 使用 pytest 或其他一些测试框架。

我们更愿意使用具有良好社区的方法。似乎我们的问题(需要良好隔离的 C++ 插件)可能是一个常见问题,但谷歌搜索我还没有找到维护的解决方案。来自更有经验的负责人的建议表示赞赏。

0 投票
9 回答
84110 浏览

python - 如何用模拟模拟只读属性?

你如何用mock模拟只读属性?

我试过:

但问题是它随后适用于类的所有实例......这打破了我的测试。

你还有别的想法吗?我不想模拟整个对象,只模拟这个特定的属性。

0 投票
5 回答
23407 浏览

python - py.test 日志控制

我们最近切换到 py.test 进行 python 测试(顺便说一句,这太棒了)。但是,我试图弄清楚如何控制日志输出(即内置的python 日志模块)。我们安装了 pytest-capturelog,它按预期工作,当我们想查看日志时,我们可以通过 --nologcapture 选项。

但是,您如何控制日志记录级别(例如信息、调试等)以及过滤日志记录(如果您只对特定模块感兴趣)。py.test 是否有现有的插件来实现这一点,还是我们需要自己推出?

谢谢,乔尼

0 投票
1 回答
2141 浏览

cython - pytest.raises(AssertionError) 使用 cython 模块失败

将文件 python_assert.py 和 cython_assert.pyx 定义为相同的,每个文件都包含一个引发 AssertionError 的简单函数:

我希望以下两个测试都能在 pytest 下成功:

但是,cython 测试失败:

这似乎是 pytest 的问题,因为等效的 unittest 成功:

此外,如果我们调用pytest.raises(Exception)而不是pytest.raises(AssertionError).

知道有什么问题吗?

0 投票
2 回答
2506 浏览

python - py.test 没有启动(EBUSY:[资源设备])

刚刚安装 py.testpip install -U pytest没有错误,但是我们尝试启动时py.test出现错误:EBUSY: [Resource device]: listdir('C:\\Users\\Administrator\\AppData\\Local\\Application Data',)

这是输出:

那会是什么?

谢谢

0 投票
0 回答
1524 浏览

python - 如何从python正确测试C API,C API将返回码作为错误返回

我的设置

我正在使用 Python 中的 pytest 和 ctypes 测试 C 库中的函数。C 库中的每个函数调用嵌入式 linux PCI 板上的一个函数,然后 C 库函数返回一个整数,该整数映射到一组返回码。如果函数成功,则返回 0,否则返回其他错误代码。

问题

我正在寻找有关测试此设置的最佳方法的一些见解,基本上我正在尝试找出测试此库的最佳实践。抛出异常和断言测试用例的最佳方式。我目前使用的测试环境使用的是pytest,切换起来会很痛苦。

由于嵌入式 linux 板具有状态,因此需要为测试设置很多状态以测试所有不同的条件。因此,理想情况下,如果出现错误,python 将捕获测试中发生的所有错误。

我当前的设置

目前我有包装 C 库代码的 python 函数。测试将调用 python 代码,如果函数不返回 0,则包装 python 函数将引发异常。因为我使用 ctypes 来调用 DLL 上的函数,所以无论如何,所有 C 函数都由 python 包装,以使它们更易于调用,因此传递参数更容易。

优点

  • 如果测试或任何中间测试的设置出现问题,则会引发异常。当测试用例设置失败时,这使得调试失败的测试用例变得更加容易。

缺点

  • 断言函数成功(返回 0)是没有用的,因为在函数返回之前会抛出错误。
  • 如果您正在测试在某些条件下调用函数会导致错误,则必须包装测试用例混乱的 try-except 块

    /li>

另外的选择

不要用 python 库包装 C 库,如果其中一个设置函数不起作用,则不要通过测试断言失败。

优点

  • 当您期望发生故障时,很容易断言来自 C API 的返回值不是 O

缺点

  • 为了使测试易于调试,对 C API 的每次调用都需要 Python 测试中的代码以确保它通过。即使它只是一个测试设置的调用。这意味着每次测试的代码行数几乎翻了一番。(或者您无法在设置中捕获错误,并且仅在测试失败时断言。这意味着当测试用例的设置失败时进行痛苦的调试)

如果有人可以对测试它的最佳方法提供任何见解,将不胜感激!可能还有其他我尚未考虑的测试方法!

干杯!

0 投票
2 回答
3772 浏览

python - Py.test 运行直到通过装饰器

我有一些测试上传不同的数据(音乐、视频)并从服务中获取元数据。

所以 time.sleep() 是一个非常糟糕的方法,因为不同的服务器和情况可能会使系统过载。

所以我正在寻找特殊的装饰器或参数来设置。像这样的东西

10 次尝试后,断言仍然失败 - 引发异常。

谢谢你。