为什么 Python assertEqual 告诉我我缺少这个单元测试中的第二个参数?

Why is Python assertEqual telling me I'm missing the second argument in this unittest?

我目前正在测试 Python 中某些对象的构造,我就是无法克服这个令人恼火的错误。这是我的代码:

from unittest import TestCase 

class TestEquals(TestCase):
    def test_success(self):
        self.assertEqual("string","string")

def main():
    TestEquals.test_success(TestEquals)

if __name__ == "__main__":
    main()

(在我的实际测试中,我正在启动一个对象来声明相等性,但我选择将其归结为两个相同的字符串,以进行抽象) 在我看来,仅在两个相同的字符串上调用 assertEqual 应该不会失败,但确实如此。

Traceback (most recent call last):
  File "tests/ex.py", line 11, in <module>
    main()
  File "tests/ex.py", line 8, in main
    TestEquals.test_success(TestEquals)
  File "tests/ex.py", line 5, in test_success
    self.assertEqual("string","string")
TypeError: assertEqual() missing 1 required positional argument: 'second'

我收到类型错误,提示我缺少第二个参数。也许我疯了,但对我来说确实看起来我包含了两个参数。

我很想知道我是不是在使用函数的方式上很笨,还是我在 unittest 库中遇到了一个罕见的错误。

提前致谢!

为了确定错误来自于我使用 assertEquals 函数的方式,而不是我的 class 实现,我尝试尽可能地减少错误。

我尝试了 with test_success(self): 语法但没有用。

我尝试提供 msg 参数,但我仍然得到相同的结果。

无需创建 main 方法。使用unittest的main方法。

import unittest

class TestEquals(unittest.TestCase):
    def test_success(self):
        self.assertEqual("string","string")

if __name__ == '__main__':
    unittest.main()

输出:

.
----------------------------------------------------------------------
Ran 1 test in 0.009s

OK