如何使用 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,如何在长时间运行的单元测试期间显示调试输出?

对多个输入文件运行数据驱动的单元测试

如何在 Python Django 中运行单元测试时禁用日志记录?

如何使用 Ivy 构建和单元测试?

如何在目录中运行所有 Python 单元测试?

(原创)odoo11.0 如何运行python单元测试