问题标签 [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 测试中记录
我想在测试函数中放置一些日志语句来检查一些状态变量。
我有以下代码片段:
我得到以下输出:
请注意,只有来自该'__name__ == __main__'
块的日志消息才会传输到控制台。
有没有办法强制pytest
从测试方法向控制台发出日志记录?
python - 如何将 stdlib 日志记录与 py.test 结合使用
我正在使用 py.test 来测试我的一些模块,其中包含相当多的 stdlib 日志记录。我当然希望日志记录到 py.test 捕获的 stdout,这样如果测试失败,我将获得所有相关的日志记录消息。
这样做的问题是,在 py.test 丢弃该对象后,日志记录模块最终尝试将消息记录到 py.test 提供的“stdout”对象。也就是说,我得到:
如果我用 关闭捕获-s
,我没有任何问题,但当然这会使测试输出无法读取无关的日志记录。
谁能告诉我将 stdlib 日志记录与 py.test 集成的正确方法?
(我试着看看这个,它看起来应该可以正常工作,所以它对我没有多大帮助)
python - py.test 如何在每次测试之前运行一个方法
我在 Python 中使用 unittest 和 nose 进行单元测试,但现在我使用的是 py.test。
unittest 和 nose 总是class.setUp
在执行 TestCase 中的每个方法之前调用。
我怎样才能用 py.test 做到这一点?
编辑:如果我添加这个:
我得到所有错误:
EDIT2:好的,我很愚蠢。我必须放在 TestCase 里面而不是外面。谢谢你。
python - 在 Python 中生成 py.test 测试
先提问,有兴趣再解释。
在 py.test 的上下文中,我如何从一小组测试功能模板生成大量测试功能?
就像是:
解释:
我正在编写的代码采用模型结构、一些数据,并学习模型的参数。所以我的单元测试由一堆模型结构和预先生成的数据集组成,然后在每个结构+数据上完成一组大约 5 个机器学习任务。
因此,如果我手动编写代码,我需要为每个任务的每个模型进行一次测试。每次我想出一个新模型时,我都需要复制并粘贴 5 个任务,更改我指向的腌制结构+数据。这对我来说是一种不好的做法。理想情况下,我想要 5 个模板函数来定义我的 5 个任务中的每一个,然后为我指定的结构列表吐出测试函数。
谷歌搜索将我带到 a) 工厂或 b) 闭包,这两者都让我脑筋急转弯,并建议我必须有一种更简单的方法,因为适当的程序员必须经常面对这个问题。那么有吗?
编辑:所以这里是如何解决这个问题!
这会将test_awesome
测试应用于我的模型列表中的每个模型!谢谢@dfichter!
(注意:断言总是通过,顺便说一句)
python - 使用 pytest 对 Python 对象进行单元测试
我有一个方法可以返回满足特定条件的对象列表
我想写一个pytest来验证find_objects()的操作
到目前为止,pytest 指向左尖括号 (<) 并声明“SyntaxError”
我在想,即使我让它工作,将来当'my_object'存储在另一个位置时它也会失败。如果我有多个实例,我如何确认报告的实例数量正确?
在这种情况下,验证返回对象的方法的输出的pythonic方法是什么?
js
python - py.test 在自定义 funcargs 中使用 monkeypatch
我使用 py.test 并且非常喜欢将对象注入测试函数的 funcarg 方法。在我的测试中,我需要使用 Mock 对象,因为我有很多外部依赖项。我使用monkeypatch 用模拟对象替换某些属性。
我遇到的问题是,我经常会得到一堆测试,这些测试将使用某个 funcarg 并且总是需要修补相同的属性。到目前为止,我替换了每个测试函数中的属性。
有没有办法在我的 funcarg 函数中使用monkeypatch,并从各个测试中删除这个重复的代码?
python - 如何配置 PyCharm 以运行 py.test 测试?
我想开始为我的 Python 代码编写单元测试,而py.test框架听起来比 Python 捆绑的unittest更好。所以我在我的项目中添加了一个“tests”目录,并在其中添加了test_sample.py。现在我想配置 PyCharm 以运行我的“测试”目录中的所有测试。
据称 PyCharm在其测试运行程序中支持 py.test 。你应该能够创建一个运行/调试配置来运行你的测试,据称 PyCharm 有一个专门用于 py.test 的“创建配置”对话框。但这就是他们关于该主题的文档的完整范围,我在任何地方都找不到这个所谓的对话框。
如果我右键单击项目工具窗口中的目录,我应该会看到一个“创建 <名称>”菜单项,但唯一以“创建”开头的菜单项是“创建运行配置”。好的,也许文档是错误的,“创建运行配置”听起来很有希望。不幸的是,其子菜单中仅有的两个项目是“C:\mypath... 中的单元测试”和“C:\mypath... 中的 Doctests”,这两者都不适用——我既没有使用 unittest,也没有使用 doctest。py.test 没有菜单项。
如果我打开我的 test_sample.py 并在编辑器窗口中单击鼠标右键,我会得到承诺的“创建 <name>”菜单项:有“在 test_sa 中创建 'Unittests ...'...”,然后是“运行'test_sa 中的单元测试 ...'”和“调试 'test_sa 中的单元测试 ...'”。再说一遍,这一切都特定于 unittest 框架;py.test 没有。
如果我尝试显示“unittest”的菜单项,我会看到一个对话框,其中包含“名称”、“类型”选项、“测试”组框以及“文件夹”和“模式”以及“脚本”和“类” " 和 "Function" 等。这听起来与文档中记录的为 Python Unit Test 添加配置的对话框完全一样,而不像应该显示的 "Name" 和 "Test to run" 和 "Keywords" 选项在py.test对话框的配置中。对话框中没有任何内容可以切换我要添加的测试框架。
我在带有 Python 3.1.3 和 pytest 2.0.3 的 Windows 上使用 PyCharm 1.5.2。我可以从命令行成功地运行py.test
我的测试,所以这不像 pytest 没有正确安装这样简单。
如何配置 PyCharm 以运行我的 py.test 测试?
python - 在 LSF 上运行 python 单元测试
我需要并行化我使用默认 unittest 模块编写的 python 单元测试。我试图在两种方法之间做出决定:
- 继续使用unittest ,但使用自定义的“多进程”运行程序,它可以使用Platform LSF (远程执行工具)生成测试,可以在TestOOB项目中找到一个示例。
- 使用py.test并自定义 pytest-xdist 插件以运行 LSF 而不是 SSH。
我倾向于#1,因为我已经有了一个工作设置,尤其是测试套件生成(它使用了一个解析 excel 电子表格的生成器,并且不是微不足道的)
关于遵循特定方法的任何建议?
注意:我的公司正在使用 LSF,我必须使用它与其他团队共享资源。
python - 在 py.test 中执行的常见设置和清除作业如何?
Python 的unittest有一种方便的方法来执行常见的设置和清理工作,方法是将相关函数分组到一个类中,该类继承unittest.TestCase
并提供该类setUp
的tearDown
函数。但是,我在py.test中找不到类似的机制。我错过了什么?
python - Pytest:取消选择测试
使用 pytest,可以使用装饰器标记测试
然后,从命令行,可以告诉 pytest 跳过标记为“慢”的测试
如果我有一个额外的标签:
我希望能够跳过长测试和慢测试。我试过这个:
还有这个:
而且似乎都不起作用。
在命令行中,我如何告诉 pytest 跳过慢速测试和长时间测试?