如何使用 XML 输出运行 Python 单元测试
Posted
技术标签:
【中文标题】如何使用 XML 输出运行 Python 单元测试【英文标题】:How to run Python Unit tests with XML output 【发布时间】:2016-12-08 00:08:47 【问题描述】:我尝试在带有 XML 输出的持续集成服务器(Bamboo,在 Debian Jessie 上运行)上运行 Python 单元测试,以便我们可以根据测试结果将构建标记为失败或成功。我目前正在努力解决我无法安装xmlrunner
模块的问题。这就是我所做的
sudo apt-get install python-xmlrunner
python3
>>> import xmlrunner
ImportError: No module named 'xmlrunner'
所以我尝试了pip
,但它说软件包已经安装
sudo pip install unittest-xml-reporting
Requirement already satisfied (use --upgrade to upgrade): unittest-xml-reporting in /usr/lib/python2.7/dist-packages
顺便说一句,我可以用 Python 2.7 导入这个模块,这可能意味着这个 python-xmlrunner
包只安装了 2.7 版本。
我通过python3 -m unittest discover project_name
运行我的测试类,主要方法类似于unittest.main(testRunner=xmlrunner.XMLTestRunner(output='test-reports'))
【问题讨论】:
【参考方案1】:通常我们使用python -m unittest
运行测试
如果您使用类似的方法,它将运行您的测试用例,但不会生成 XML 文件。所以像python test.py
一样运行你的代码。
【讨论】:
【参考方案2】:您应该使用pip
安装运行器,我认为该软件包只是称为xmlrunner
(但也许那是python 2.7)
pip install xmlrunner
更好的是virtualenv 中的所有内容。然后你可以传递一个requirements.txt
和你所有的依赖,你不需要sudo
安装任何东西。然后你可以选择任何你喜欢的 python 版本,与你的全局安装隔离。
如果你想检查它是否安装,以及哪个版本,使用pip freeze
编辑
如果pip install xmlrunner
不起作用,请尝试pip install unittest-xml-reporting
。谢谢@scrutari
【讨论】:
【参考方案3】:当我遇到这个问题时,我可以通过将以下行放在导入语句上方来解决它:
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
【讨论】:
以上是关于如何使用 XML 输出运行 Python 单元测试的主要内容,如果未能解决你的问题,请参考以下文章
使用 ReSharper,如何在长时间运行的单元测试期间显示调试输出?