如何在python中通过单元测试为init函数编写测试用例?

如何在python中通过单元测试为init函数编写测试用例?,python,python-unittest,Python,Python Unittest,我是Python新手。我有一个\uuuu init\uuuu函数,其中包含有关数据接收器配置的信息,我必须为此编写一些测试用例。但是init是一个不返回任何结果的函数,这让我很困惑。你能告诉我一些实现测试用例的方法吗?多谢各位 我的职能: class DataSinkConfig(): DEFAULT_ENTRIES_TABLE = 'entries' DEFAULT_OUTLIERS_TABLE = 'outliers' DEFAULT_OUTLIERCAUSES_TA

我是Python新手。我有一个
\uuuu init\uuuu
函数,其中包含有关数据接收器配置的信息,我必须为此编写一些测试用例。但是
init
是一个不返回任何结果的函数,这让我很困惑。你能告诉我一些实现测试用例的方法吗?多谢各位

我的职能:

class DataSinkConfig():
    DEFAULT_ENTRIES_TABLE = 'entries'
    DEFAULT_OUTLIERS_TABLE = 'outliers'
    DEFAULT_OUTLIERCAUSES_TABLE = 'outlier_causes'

    # Note
    def __init__(self, dbconf):

        insopt = dbconf.get('insopt')
        if insopt is None:
            self.entries_table_name = self.DEFAULT_ENTRIES_TABLE
            self.outliers_table_name = self.DEFAULT_OUTLIERS_TABLE
            self.outlier_causes_table_name = self.DEFAULT_OUTLIERCAUSES_TABLE
        else:
            try:
                dict(insopt)
            except Exception as e:
                raise Exception(
                    "Invalid value {} for parameter 'insopt'.".format(insopt))

            self.entries_table_name = self.__complement_item(insopt, 'entry_tbl', self.DEFAULT_ENTRIES_TABLE)
            self.outliers_table_name = self.__complement_item(insopt, 'outlier_tbl', self.DEFAULT_OUTLIERS_TABLE)
            self.outlier_causes_table_name = self.__complement_item(insopt, 'cause_tbl', self.DEFAULT_OUTLIERCAUSES_TABLE)
我的测试被卡住了:

import unittest
import DataSinkConfig, DataSourceConfig

class TestDataSink(unittest.TestCase):
    def setUp(self): 
      #pass

if __name__ == "__main__":
    unittest.main()

你可以做一些事情,比如检查对象的状态。 显然,您可以将DataSink实例化移动到setUp方法

import unittest
import DataSinkConfig, DataSourceConfig

class TestDataSink(unittest.TestCase):
    def setUp(self): 
      #pass

    def test_data_sink(self):
        dsc = DataSinkConfig(db_conf)
        self.assertEqual(dsc.entries_table_name, "WHATREVER COMPLIMENT ITEM WAS SUPPOSE TO SET")

if __name__ == "__main__":
    unittest.main()

\uuuu init\uuuu
在创建is后初始化对象,因此您必须在测试中检查对象状态。通常,任何不返回任何内容的方法只能通过其副作用(例如,对象状态的更改)进行测试,因此这不是
\uuuuu init\uuuuuu
所特有的。