python - 我如何使这个测试通过?

标签 python unit-testing

我正在尝试测试 __repr__ 的返回类型。它不是一个字符串,那它是什么?这里发生了什么?

import unittest
class MyClass(unittest.TestCase):
    class Dog(object):
            def __init__(self, initial_name):
                self._name = initial_name

            def get_self(self):
                return self

            def __repr__(self):
                return "Dog named '" + self._name + "'"

    def runTest(self):
        fido = self.Dog("Fido")
        self.assertEqual("Dog named 'Fido'", fido.get_self()) #Fails!

test=MyClass("runTest")
runner=unittest.TextTestRunner()
runner.run(test)

运行这个给出:

FAIL: runTest (__main__.MyClass)
----------------------------------------------------------------------
Traceback (most recent call last):
   File "/home/xxxxx/fido.py", line 15, in runTest
     self.assertEqual("Dog named 'Fido'", fido.get_self())
   AssertionError: "Dog named 'Fido'" != Dog named 'Fido'

 ----------------------------------------------------------------------
 Ran 1 test in 0.006s

 FAILED (failures=1)

我怎样才能通过这个测试?

最佳答案

self.assertEqual("Dog named 'Fido'", repr(fido.get_self()))

或者只是

self.assertEqual("Dog named 'Fido'", repr(fido))

否则 assertEqual 会正确地告诉您字符串不等于对象。当它呈现错误消息时,它在对象上使用了 repr,所以错误看起来有点困惑

关于python - 我如何使这个测试通过?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12262967/

相关文章:

c# - 单元测试 Microsoft Band

python - 跳过二维数组 Python 中的 INF 值

python - 我运行带有multiprocessing.Pool()的python代码,所有进程一开始运行良好,但是所有进程都在几个小时后陷休眠眠状态

python - 如何合并两个数据框与重叠日期时间范围内的列

c# - 如果 "Presenter"在 "View"上设置属性是否违反了 MVP 模式?

android - Mockito 无法模拟/监视,因为 : - final class

unit-testing - 如何在Grails单元测试类中动态模拟域?

python - Pymunk -- 查找物体的相关形状和约束

python - matplotlib argrelmax 找不到所有最大值

java - 如何使用 AbstractAjaxTimerBehavior 对 Wicket 组件进行单元测试?