【问题标题】:Running python unit tests and output the results to Jenkins运行 python 单元测试并将结果输出到 Jenkins
【发布时间】:2016-08-12 20:07:06
【问题描述】:

对于使用 Jenkins 的项目,我希望能够运行 Python 单元测试。这些测试包含与嵌入式设备的交互。结果应报告给詹金斯。

我当前的设置(使用 python 2.7)如下所示

|
| helperModules
|-- customlogger.py
|-- settings.py
|-- serial.py
| tests
|-- test_login
|-- test_communicate_serial
| start.py

在根目录中,我有一个名为 start.py 的文件,它会初始化一些设置,例如自定义记录器,并在运行单元测试之前加载一些常规设置。测试本身位于 test 目录下,测试目前基于 Python 的 unittest,由 start.py 执行。

由于我想运行测试并生成可供 Jenkins 阅读的报告,我想知道我应该采取哪些步骤。使用 py.test、nose 还是 xmlrunner?由于鼻子可能会停止维护,这不是首选。我应该使用 py.test,是否需要调整我的设置并尝试删除 start.py。我在 start.py 中设置的日志记录是调试所必需的,所以如果我需要通过将其放入测试用例本身来替换它,它将改变我当前的设计,但是这个日志记录是必需的。

想知道您对此有何想法,您将如何进行。

【问题讨论】:

    标签: python unit-testing jenkins


    【解决方案1】:

    发布后我开始尝试 pytest 并将其集成到当前的 start.py 中。

    import pytest
         .
         .
    pytest.main("--junitxml=\"report\test.xml\"")
    

    当所有设置完成后,我用参数调用这个 pytest.main 来生成 xml 文件。它会自动发现我的单元测试并执行它们。

    看起来集成很简单,并且仍然与我的设置保持兼容性。希望这个答案也可以帮助其他人。

    另一个好处是我也可以跑

    python -m pytest --junitxml=test.xml 
    

    当然,在运行测试时不会从命令行设置日志记录,但运行测试可能是一个不错的功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 2012-11-09
      • 1970-01-01
      • 2012-10-13
      • 2016-12-08
      • 2017-05-04
      • 1970-01-01
      相关资源
      最近更新 更多