unittest.TestCase 中的断言函数是成员函数。这意味着必须通过以下方式调用它们:
self.assertTrue(2 + 2 == 5)
而不是类似:
unittest.assertTrue(2 + 2 == 5)
当我想在另一个函数中使用这些断言函数时,我发现有点不方便,例如:
import unittest
def outside_test(test):
test.assertTrue(2 + 2 == 5)
class T(unittest.TestCase):
def test_something(self):
outside_test(self)
t = T()
t.test_something()
我必须将 self
传递到 outside_test()
才能使用 assertTrue()
。
这些断言函数有什么理由成为unittest.TestCase
的成员函数吗?
最佳答案
这只是因为他们复制了 JUnit,后者使用实例方法进行断言。这也是为什么所有内容都以驼峰命名法而不是下划线命名。
在 Python 中使用实例方法没有明显的优势;模块级函数可能是一个更方便的接口(interface),并且 other Python testing frameworks使用 assert
语句。在 Java 中,特别是在 import static
之前,实例方法是最方便的。
关于python - 为什么unittest.TestCase中的assert函数必须是成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48143373/