测试该列表包含相同类型的“对象”python unittest

时间:2013-12-19 09:23:59

标签: python unit-testing

我有一个检查函数返回值的测试,问题是函数返回一个元组列表,其中每个元组包含一个整数和一个对象。

该对象具有浮点属性,因此我想在那里使用assertAlmostEqual,但类似于列表中的“assertSameStructure”。

所以在伪代码中我想做什么:

import unittest
class Test(unittest.TestCase):
    def test_foo(self):
        result = foo(data)
        expected_obj = Bar(23.3,12.1)
        self.assertSameStructure([0,expected_obj],result)
        self.assertAlmostEquals(expected_obj,result[0][1])

2 个答案:

答案 0 :(得分:2)

有一些模块可以帮助验证模式,而不仅仅是测试特定的行为。以下是schema的简单示例:

from schema import Schema

class Test(unittest.TestCase):
    def assertHasSchema(self, schema, obj):
        return Schema(*schema).validate(obj)

    def test_foo(self):
        result = foo(data)
        expected_obj = Bar(23.3,12.1)

        self.assertHasSchema([(int, Bar)], result)

        self.assertAlmostEquals(expected_obj, result[0][1])

答案 1 :(得分:0)

如果你确定你只从测试中得到一个结果元组,你可以简单地测试

self.assertAlmostEquals([(0,expected_obj)], result)

伪代码中唯一缺少的是整数和对象周围的括号。

或者你可以通过运行isinstance(obj, tuple)等来实现assertSameStructure。