詹金斯的py.test:没有发现松弛的测试。我哪里错了?

时间:2016-08-02 10:48:20

标签: python jenkins slack

运行Build时我一直收到错误。 jenkins中的py.tests:

jenkins执行shell:

#!/bin/sh
py.test tests || true

它开始了。完成后我会看到下一个日志:

   Started by user manny
Building in workspace /var/lib/jenkins/workspace/web-services tests
> git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> git config remote.origin.url https://example.git # timeout=10
Fetching upstream changes from https://example.org/m.git
 ...
 ...
[web-services tests] $ /bin/sh /tmp/hudson1759686215204688979.sh
============================= test session starts ==============================
platform linux -- Python 3.5.1, pytest-2.9.1, py-1.4.31, pluggy-0.3.1
rootdir: /var/lib/jenkins/workspace/web-services tests/tests, inifile: 
plugins: asyncio-0.3.0
collected 99 items / 4 errors

tests/bll/test_action_manager.py ......  //here goes list of tests
...


===== 3 failed, 75 passed, 1 skipped, 20 xfailed, 4 error in 76.85 seconds =====
Finished: SUCCESS

jenkins通知Slack:

web-services tests - #44 Back to normal after 19 min (</job/web-services%20tests/44/|Open>)
No Tests found.

未找到任何测试。如何解决?

3 个答案:

答案 0 :(得分:1)

Jenkins根据退出代码标记构建成功/失败。 0表示成功,否则失败。

没有错误时,Py.Test的Exitcode为0。当有1个或多个错误时,不是0(可能是1,不知道确切)。

解决方案:

  • 将您的通话换成单独的shellcript并忽略exitcode
  • 将Jenkins职位更改为'your command || true'

答案 1 :(得分:0)

手动运行相同的测试(在Jenkins之外)并检查那里的错误。 问题可能是测试集合,或者只是测试失败本身。

另外:请发布完整日志,以便我们更好地检查发生了什么

答案 2 :(得分:0)

从日志中我们可以看到python脚本失败了

<强> collected 99 items / 4 errors

从Jenkins的角度来看,如果遇到任何错误,它将失败,因为Jenkins默认使用/bin/sh -xe

因此,在调用python脚本之前添加#!/bin/sh可能有助于解决此问题:

    #!/bin/sh
    py.test tests