如何使用Unittest套件传递变量

时间:2010-05-11 15:47:05

标签: python unit-testing

您好我使用unittest测试了。我有一个测试套件,我试图将变量传递到每个测试中。以下代码显示了使用的测试套件。

class suite():

    def suite(self): #Function stores all the modules to be tested

        modules_to_test = ('testmodule1', 'testmodule2')
        alltests = unittest.TestSuite()
        for module in map(__import__, modules_to_test):
            alltests.addTest(unittest.findTestCases(module))
        return alltests

它调用测试,我想知道如何将变量传递给此类的测试。下面是一个示例测试脚本:

class TestThis(unittest.TestCase):
    def runTest(self):
        assertEqual('1', '1')

class TestThisTestSuite(unittest.TestSuite):

    # Tests to be tested by test suite
    def makeTestThisTestSuite():
        suite = unittest.TestSuite()
        suite.addTest("TestThis")
        return suite

    def suite():
        return unittest.makeSuite(TestThis)


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

所以从class suite()我想输入一个值来改变断言值中的值。 Eg. assertEqual(self.value, '1')。我已经尝试过sys.argv进行单元测试,但似乎无法正常工作。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:4)

在命令行上传递交互式值并不符合自动化单元测试的意图。如何使用ConfigParser库模块并让TestCase子类的__init__方法以这种方式加载一些变量测试输入数据?

当然,坚持使用您拥有的代码,用于保存测试数据的模块全局变量或类常量成员怎么样?例如,在按名称导入测试模块后,您不能只执行

module.testVars = [1, 2, 3, "foo"]

让测试模块中的测试引用该变量(默认情况下可能是空列表)?