2012-08-10 205 views
1

我想编写一个套件测试,我有一个模块正确运行单元测试,但我打算添加更多模块并立即测试它们,所以我编码了以下代码:Python套件测试不运行测试

#main.py 

import unittest 
from test.Services import TestOS 

if __name__ == '__main__': 
    suite = unittest.TestSuite() 
    suite.addTests(TestOS.TestOS()) 
    unittest.TextTestRunner().run(suite) 

TestOS.py

import unittest 
from app.Services.OS import OS 

class TestOS(unittest.TestCase): 
    os = OS() 
    def setUp(self): 
     pass 
    def tearDown(self): 
     pass 
    def testOSName(self): 
     self.assertEquals(self.os.getPlatform(), 'Windows')  
    def testOSVersion(self): 
     self.assertEquals(self.os.getVersion(), '7') 

if __name__ == "__main__": 
    #import sys;sys.argv = ['', 'Test.testName'] 
    unittest.main() 

它运行后,我得到这样的输出:

Finding files... done. 
Importing test modules ... done. 

---------------------------------------------------------------------- 
Ran 0 tests in 0.000s 

OK 

它没有没有找到任何测试,我的代码有什么问题?

+2

包括在您的文章你的测试代码。 – 2012-08-10 21:31:42

+0

@BrendenBrown完成! – dextervip 2012-08-10 21:37:27

回答

4

suite.addTest(TestOS.TestOS())仅适用于您的测试用例包含runTest()函数的情况。 否则,您需要一个“TestLoader”来检测以“test *”开头的TestOS功能。

#main.py 

import unittest 
from test.Services import TestOS 

if __name__ == '__main__': 
    suite = unittest.TestSuite() 
    tests = unittest.defaultTestLoader.loadTestsFromTestCase(TestOS) 
    suite.addTests(tests) 
    unittest.TextTestRunner().run(suite) 
+0

我改变了我的代码,但仍然没有运行测试,你确定它是正确的吗? – dextervip 2012-08-10 22:22:22

+0

我测试过它,但我没有完整的代码。也许你需要unittest.defaultTestLoader.loadTestsFromTestCase(TestOS.TestOS)? – Vortexfive 2012-08-10 22:26:19

+0

奇怪我不能让它工作。 – dextervip 2012-08-11 02:41:39

0

修改您的设置方法如下

def setUp(self): 
    self.os = OS() 
    pass 
+0

为什么这会有所作为? (唯一的原因是它会产生任何变化,如果为程序的同一运行实例化多个'TestOS'并且操作系统在这些实例之间实际发生变化,这听起来难以置信)。 – 2012-08-11 05:59:20