我正在学习在Python中编写和运行(单元)测试的不同可能性。我想将测试的输出存储在SQL数据库中 - 最好是sqlite。
我找到了一种使用代码内部的鼻子框架运行测试的方法,如下所示:
import nose
import os
os.chdir('./projects/project A')
result = nose.run()
print 'The result:', result
我得到以下输出:
The result: True
....
----------------------------------------------------------------------
Ran 4 tests in 0.013s
OK
我被迫解析stderr / stdout还是有更好的方法来获取测试结果和消息以便进一步处理?
答案 0 :(得分:0)
您可以运行nosetests --with-xunit
以标准XUnit文件格式(XML)获取结果。然后,您可以解析并处理它以将其插入数据库。
您还可以查找以不同输出格式写入的第三方插件。最后一个选择是自己编写一个插件。
答案 1 :(得分:0)
我必须说使用unittest — Unit testing framework
取得了更大的成功基本上,TestRunner会生成一个TestResult类的实例,用于存储有关测试的信息。
if __name__ == "__main__":
suites = [unittest.TestLoader().loadTestsFromTestCase(KnownValues),
unittest.TestLoader().loadTestsFromTestCase(ToRomanBadInput),
unittest.TestLoader().loadTestsFromTestCase(FromRomanBadInput),
unittest.TestLoader().loadTestsFromTestCase(CaseCheck)]
# runs 12 test
testResult = unittest.TextTestRunner(verbosity=0).run(unittest.TestSuite(suites))
print 'The errors: ', testResult.errors
print 'The Failures: ', testResult.failures
print 'The number of runs: ', testResult.testsRun
print 'Test were successful: ', testResult.wasSuccessful()
生成此输出:
The errors: []
The Failures: []
The number of runs: 12
Test suite was successful: True
文档中描述了更多内容。