【问题标题】:How to run Python Unit tests with XML output如何使用 XML 输出运行 Python 单元测试
【发布时间】: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'))

【问题讨论】:

    标签: python linux debian python-module python-unittest


    【解决方案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__), "..")))
        

        【讨论】:

          猜你喜欢
          • 2016-01-16
          • 2021-12-30
          • 2016-08-12
          • 1970-01-01
          • 1970-01-01
          • 2021-09-25
          • 1970-01-01
          • 2010-09-07
          • 1970-01-01
          相关资源
          最近更新 更多