我尝试使用自定义测试发现,同时使用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" ...
,这不是我正在寻找的。我很感激第一个代码片段所建议的代码内解决方案。
由于
答案 0 :(得分:0)
我遇到了同样的问题并最终得到了这个解决方案:
test_results = xmlrunner.XMLTestRunner(output="xml_test_result").run(unittest.TestLoader().discover("./test", "*_test.py"))