2010-04-09 133 views
1

我有一个测试套件来执行烟雾测试。我将所有脚本存储在各个类中,但是当我尝试运行测试套件时,如果它在某个类中,我似乎无法使其工作。该代码是如下:(a类调用测试)问题的运行单元测试测试套件OO

from alltests import SmokeTests 

class CallTests(SmokeTests): 

    def integration(self): 

     self.suite() 

if __name__ == '__main__': 
    run = CallTests() 
    run.integration() 

并测试套件:

class SmokeTests(): 

    def suite(self): #Function stores all the modules to be tested 
     modules_to_test = ('external_sanity', 'internal_sanity') 
     alltests = unittest.TestSuite() 
     for module in map(__import__, modules_to_test): 
      alltests.addTest(unittest.findTestCases(module)) 
     return alltests 
if __name__ == '__main__': 
    unittest.main(defaultTest='suite') 

该输出的一个错误: 属性错误:“模块”对象没有属性“套件'

所以我可以看到如何调用一个正常的函数定义,但我发现很难调用套件。在浴室的设置,像这样一个测试:

class InternalSanityTestSuite(unittest.TestSuite): 

# Tests to be tested by test suite 
def makeInternalSanityTestSuite(): 
    suite = unittest.TestSuite() 
    suite.addTest(TestInternalSanity("BasicInternalSanity")) 
    suite.addTest(TestInternalSanity("VerifyInternalSanityTestFail")) 
    return suite 

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

如果我有someSuite()类SmokeTests蟒蛇里面找不到属性套装,但如果我删除了一流的IT工作的。我将它作为脚本运行,并将变量调用到测试中。我不想通过os.system('python tests.py')运行测试。我希望通过班级的测试来调用我像其他功能一样

任何人都可以帮助我实现这个目标吗?

感谢您提前提供任何帮助。

+1

-1:请不要完全重写您发布的代码。关闭该问题并用全新的代码发布新问题。 – 2010-04-09 14:24:37

+0

@everyone - 在下一个问题中得到这个工作。 – chrissygormley 2010-04-12 11:22:48

回答

3

我知道这不是答案,但我建议使用可以使用测试发现的库,如Python 2.7+的nose或unittest功能。

可能性做

nosetests module.submodule 

nosetests module.submodule:TestCase.test_method 

是无价的:)

1

这可不行:

class SmokeTests(): 

    def suite(self): #Function stores all the modules to be tested 
     modules_to_test = ('external_sanity', 'internal_sanity') 
     alltests = unittest.TestSuite() 
     for module in map(__import__, modules_to_test): 
      alltests.addTest(unittest.findTestCases(module)) 
     return alltests 

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

此输出的一个错误:属性错误:'模块'对象h因为没有属性'套件'。

您的套房的方法值为SmokeTests().suite()。请注意一个名为suite的变量,因为您没有这样的变量。

为您的套件使用简单功能更容易。

def someSuite(): 
    modules_to_test 
    ... 
    return alltests 

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

这样的事情会更接近正确的。