【发布时间】:2022-01-16 07:53:48
【问题描述】:
我刚刚在类的构造函数中添加了一些assert 语句。
这立即导致大约 10 次测试失败。
与其摆弄那些测试,我只想让 pytest 在 Python 的优化开启(-O 开关,这意味着 asserts 都被忽略)的情况下运行应用程序代码(显然不是测试代码)。但是查看文档和搜索我找不到这样做的方法。
我有点想知道这是否是一种不好的做法,因为可以说是在测试期间查看 asserts 是否失败。
另一方面,另一个想法是您可能有某些测试(集成测试等)应该在没有优化的情况下运行,以便asserts 生效,以及其他测试您对正在创建的对象不那么谨慎,忽略asserts 可能是合理的。
asserts 显然符合“测试的一部分”...变得更加复杂。
【问题讨论】:
-
为什么不修复断言失败的代码?您要么在代码中发现错误,要么失败的断言毫无意义,应该被删除。
-
我试图解释一下:这将涉及对传递的参数更加谨慎。当您将 Mock 作为参数传递时,您只需为其提供尽可能少的特征以使其充当假对象。
-
如果值得添加断言,则值得正确配置您的 Mock。
-
有趣的想法,但我不确定我是否同意:我认为
asserts 本身就是质量检查:他们不一定要与测试合作。跨度> -
如果您正在挑选可以忽略特定测试的先决条件,那么您的测试是脆弱的。仅仅因为期望
Foo类型参数的函数不使用Foo实例的每个 功能并不意味着您应该采取捷径并提供损坏的Foo进行测试.
标签: python optimization pytest python-unittest assert