如何在使用xmlrunner时使用unittest启用自定义测试发现

时间:2017-07-07 07:58:18

标签: python python-3.x python-unittest

我尝试使用自定义测试发现,同时使用xmlrunner以XML格式报告我的测试结果。有人可以向我解释如何正确使用unittest.TestLoader().discover()吗?我在文件test.py的末尾尝试了以下内容:

if __name__ == '__main__':
     with open('output.xml', 'wb') as output:
         unittest.main(
             testRunner=xmlrunner.XMLTestRunner(output=output),
             failfast=False, buffer=False, catchbreak=False, exit=False, 
             testLoader=unittest.TestLoader().discover('.', pattern = "*_test.py")
         )

但这会产生错误:

File "test.py", line 20, in <module>
    failfast=False, buffer=False, catchbreak=False, exit=False, testLoader=unittest.TestLoader().discover('.', pattern = "*_test.py"))
  File "/usr/lib/python3.5/unittest/main.py", line 93, in __init__
    self.parseArgs(argv)
  File "/usr/lib/python3.5/unittest/main.py", line 140, in parseArgs
    self.createTests()
  File "/usr/lib/python3.5/unittest/main.py", line 144, in createTests
    self.test = self.testLoader.loadTestsFromModule(self.module)
AttributeError: 'TestSuite' object has no attribute 'loadTestsFromModule'

如果我在没有testLoader参数的情况下运行并且模块参数设置为None,则运行测试发现,但默认设置不是我想要的。

我到目前为止找到的所有答案都与命令行有关,例如python –m unittest discover -p "test*.py" ...,这不是我正在寻找的。我很感激第一个代码片段所建议的代码内解决方案。

由于

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题并最终得到了这个解决方案:

test_results = xmlrunner.XMLTestRunner(output="xml_test_result").run(unittest.TestLoader().discover("./test", "*_test.py"))