unittest.TestCase.assertEqual的参数顺序

Jer*_*auw 6 python django python-unittest

难道assertEqual(actual, expected)还是assertEqual(expected, actual)

一方面我看到很多代码使用assertEqual(actual, expected).这包括在单元测试文档的例子在Django文档的例子.

但是,这个测试assertEqual('foo', 'bar')给了我输出

- foo
+ bar
Run Code Online (Sandbox Code Playgroud)

这恰好与PHPUnit测试相同 assertEquals( 'foo', 'bar' );

-'foo'
+'bar'
Run Code Online (Sandbox Code Playgroud)

PHPUnit $expected作为第一个参数,后跟$actual.这种差异也是我所期望的expected, actual.

所有这些Python代码我看到做错了吗?

我检查了unittest方法的定义,尽管它有非常有用的first, second参数名称.

Cha*_*les 8

我通常使用它assertEqual(expected, actual),因为输出消息更有意义。

代码:

from unittest import TestCase

class TestClass(TestCase):
    def test_equal(self):
        expected = 1
        actual = 2
        self.assertEqual(expected, actual)
Run Code Online (Sandbox Code Playgroud)

输出:

2 != 1

Expected :1
Actual   :2
Run Code Online (Sandbox Code Playgroud)

如果顺序颠倒,则消息将错误地显示:

Expected :2
Actual   :1
Run Code Online (Sandbox Code Playgroud)


Moi*_*dri 6

根据assertEqual文件:

测试first 和 second 是否相等。如果比较的值不相等,则测试将失败。

因此,您可以将预期和实际放在任何地方,它会返回相同的结果。但通常的做法是使用实际结果作为第一个参数,使用预期结果作为第二个参数。它也在Python 3 的 Unittest Example 中进行了演示:

s = 'hello world'
self.assertEqual(s.split(), ['hello', 'world'])
Run Code Online (Sandbox Code Playgroud)