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

时间:2020-02-24 04:44:31

标签: python python-unittest

我是Python新手。我有一个__init__函数,其中包含有关数据接收器配置的信息,我必须为此编写一些测试用例。但是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()

1 个答案:

答案 0 :(得分:1)

您可以执行诸如检查对象状态的操作。 显然,您可以将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()