Python Unittest-为对象实例编写测试

Python Unittest-为对象实例编写测试,python,python-unittest,Python,Python Unittest,我有: 现在我正在为myfunc编写单元测试,如下所示: class MyClassA: def __init__(...): do some stuff create object attributes def myfunc: get required data create MyClassA object(s) store MyClassA object(s) in a list return(list of MyC

我有:

现在我正在为myfunc编写单元测试,如下所示:

class MyClassA:
    def __init__(...):
        do some stuff
        create object attributes


def myfunc:
    get required data
    create MyClassA object(s)
    store MyClassA object(s) in a list
    return(list of MyClassA object(s))
我应该将预期结果设置为什么?要使测试通过,它应该是一个对象列表,但它应该具有与我将示例数据传递到myfunc时创建的实例相同的实例。如果我在unittest中创建另一个MyClassA实例,那么它显然会失败,因为实例会不同。我想验证myfunc输出列表中的每个对象的属性是否与示例数据匹配。正确的方法是什么


PS:我希望我的问题是清楚的。

TestMyFunc可能超载,考虑把它分解成更易于管理的块。

例如,一些测试用例定义可能是:

import unittest

class Test_myfunc(unittest.TestCase):
    sample_data = ...
    expected_result = ??
    self.assertEqual(myfunc(sample_data), expected_result)
这样做的目的是使测试用例保持简单,以便更容易理解故障,并且错误消息具有信息性


最后一个测试是您可以断言单个对象中的样本数据是否存在。如果您愿意,您还可以使用相同的想法创建更多的定义—针对不同的MyClassA场景使用不同的实例。

您不必在意预期结果和返回结果是否包含不同的实例,只需它们包含相同的实例即可。只需手动创建您希望
myfunc
创建的实例,并确保您的类具有适当的
\uuuuueq\uuuu
定义来进行比较。

@Alex Forbes-感谢您的反馈。是的,单元测试确实出现过载。我将把它分成更小/更简单的测试。
test_myfunc_returns_list
test_myfunc_list_items_are_instanceof_MyClassA
test_myfunc_contains_MyClassA_with_attributes