在某些SQL数据库中将单元测试的结果存储在python中

时间:2015-02-05 00:22:31

标签: python sql unit-testing testing python-nose

我正在学习在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还是有更好的方法来获取测试结果和消息以便进一步处理?

2 个答案:

答案 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

文档中描述了更多内容。