当前位置:  开发笔记 > 编程语言 > 正文

什么是Python UnitTest中的assertEqual应该做什么?

如何解决《什么是PythonUnitTest中的assertEqual应该做什么?》经验,为你挑选了1个好方法。

这个问题不是上述问题的重复,我不是要求一种方法来比较实例,而是要求方法assertEqual,以及它的目的是什么.

assertEqual(a, b)检查是否a == b返回True或False,

文件说,

测试第一和第二是相等的.如果值不相等,则测试将失败.

assertEqual在一个简单的课上运行三个测试,

上课时考试

class Car:
    def __init__(self, name):
        self.name = name

TestCase

class CarTest(unittest.TestCase):

    def test_diff_equal(self):
        car1 = Car('Ford')
        car2 = Car('Hyundai')
        self.assertEqual(car1, car2)

    def test_name_equal(self):
        car1 = Car('Ford')
        car2 = Car('Ford')
        self.assertEqual(car1, car2)

    def test_instance_equal(self):
        car1 = Car('Ford')
        self.assertEqual(car1, car1)

结果是

F.F
======================================================================
FAIL: test_diff_equal (cartest.CarTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "cartest.py", line 10, in test_diff_equal
    self.assertEqual(car1, car2)
AssertionError:  != 

======================================================================
FAIL: test_name_equal (cartest.CarTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "cartest.py", line 15, in test_name_equal
    self.assertEqual(car1, car2)
AssertionError:  != 

----------------------------------------------------------------------
Ran 3 tests in 0.000s

FAILED (failures=2)

assertEqual用来检查这两个实例中都一样吗?或者我的设置有什么问题?为什么test_name_equal()失败了?



1> RemcoGerlich..:

你的测试工作得非常好,而且发现了一个错误.欢呼!

您的两个Car对象可能具有相同的名称,但为什么这意味着它们是同一辆车?代码中没有任何内容可以做到这一点.

如果您希望如此,请__eq__在Car类上实现:

def __eq__(self, other):
    """Return True if other is also a car and has the same name as
    this one."""

    return isinstance(other, Car) and self.name == other.name

那个测试应该通过.


因为`car1`和`car2`是_not_相等.它们是两个不同的对象.如果你希望它们被认为是平等的,你需要实现`__eq__`特殊方法,正如这个答案所暗示的那样.
推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有