Nosetest会覆盖xml输出

时间:2013-11-29 04:42:21

标签: python nosetests

我遇到nosestests两次写入unittext xml文件的问题。

我有这个python脚本

import unittest

class aa(unittest.TestCase):
    def test_aa(self):
        self.assertTrue(True)


testlist = []

suite = unittest.TestLoader().loadTestsFromTestCase(aa)
testlist.append(suite)

allSuites = unittest.TestSuite(testlist)
unittest.TextTestRunner(verbosity=3).run(allSuites)

print 'done'

问题是如果我像这样运行它

nosetests  --with-xunit -s --verbosity=2 test.py 

我得到了这个输出

test_aa (test.aa) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.000s

OK
done
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

问题是这次写入nosetests.xml文件两次。有没有办法让这次运行测试一次?

我需要这个的原因是我有一个单元测试,基本上第一次运行正常,然后第二次失败,xml文件被0测试运行覆盖。

干杯,
保罗

1 个答案:

答案 0 :(得分:2)

您正在运行测试两次,一次是在导入期间(与unittest.xx.run(allSuites)对齐),第二次是在发现test_aa()测试时使用鼻子。如果你打算使用鼻子,你不必在脚本中运行测试 - 鼻子将作为你的测试运行器。

您可以通过使用普通python your_test.py(不使用鼻子)运行测试,或者通过重写测试来运行它,并使用您所述的命令:

import unittest

class aa(unittest.TestCase):
    def test_aa(self):
        self.assertTrue(True)

if __name__ == '__main__':
    # this will not run on import, only when tests are running with unittest with python
    testlist = []

    suite = unittest.TestLoader().loadTestsFromTestCase(aa)
    testlist.append(suite)

    allSuites = unittest.TestSuite(testlist)
    unittest.TextTestRunner(verbosity=3).run(allSuites)

    print 'done'