如何解决为什么unittest中的断言使用TestCase.assertEqual而不使用assert关键字?
| Python的内置unittest模块使用TestCase.assert*
方法进行断言:
class FooTest(TestCase):
def test_foo(self):
self.assertEqual(1,1)
self.assertNotEqual(1,2)
self.assertTrue(True)
我通常使用过鼻子或py.test之类的测试运行程序,它们在声明时允许使用内置的assert
关键字:
assert 1 == 1
assert 1 != 2
assert True
单元测试的“ 0”方法的动机是什么?与使用内置的assert关键字进行断言相比,此方法的优缺点是什么?是否有理由偏爱unittest的语法?
解决方法
assert
关键字的问题在于,当Python在“优化”模式(使用with6 optimized参数或设置了PYTHONOPTIMIZE
环境变量)下运行时,它已被优化,因此被忽略了。如果测试使用use2ѭ,则进行测试-O
是不可能的。
此外,使用assert方法可以轻松地报告实际涉及的值,而不必深入研究堆栈和源,也不必弄清楚它们应该是什么(我相信这是技术“ 10”)和py.test
用于此。)
, 我没有为此做出具体的设计决定。查看它指出的单元测试文档
那
类型特定的相等函数将被调用,以生成更有用的默认错误消息
所以我想说这是一个实施决策,以帮助产生更多有意义的错误等。
, 这种方法的主要优点是提供了一些通常执行的内置测试,因此不必一次又一次地编写它们。另外,assertRaises允许您通过引发异常来定制断言的确切行为。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。