获取Jenkins中测试失败的次数

获取Jenkins中测试失败的次数,jenkins,Jenkins,我们有一些测试会无缘无故地周期性失败,主要是JUnit超时。我想知道我是否能得到每次测试失败的次数。有了这些,我可以看出是某些测试一直存在问题,还是与棘手的测试无关,更重要的是服务器上Jenkins的稳定性问题。我遇到了同样的问题,我们制作了一个python,它可以抓取最后N个版本中的失败测试: # -*- coding: utf-8 -*- #! /usr/bin/python import urllib import re import sys project = "HERE_THE_PR

我们有一些测试会无缘无故地周期性失败,主要是JUnit超时。我想知道我是否能得到每次测试失败的次数。有了这些,我可以看出是某些测试一直存在问题,还是与棘手的测试无关,更重要的是服务器上Jenkins的稳定性问题。

我遇到了同样的问题,我们制作了一个python,它可以抓取最后N个版本中的失败测试:

# -*- coding: utf-8 -*-
#! /usr/bin/python
import urllib
import re
import sys

project = "HERE_THE_PROJECT_NAME"
jenkin_host = "http://path.to.your.jenkins/jenkins/job/%s" % project

last_build = int(re.search("%s #(\d+)" % project, urllib.urlopen(jenkin_host + "/rssAll").read()).group(1))

start_build = last_build
nb_build = 200

REG_EXP = """All Failed Tests(.*)All Tests"""
FAILURE_REG_EXP = """javascript:hideStackTrace\(([^<]*)\)"""

all_failures = {}
last_seen = {}

print "Loading %s builds starting from build number %s" % (nb_build, start_build)

build_ok = 0

for build_id in range(start_build - nb_build, start_build + 1):
    test_page = jenkin_host + "/%s/testReport/" % build_id
    sys.stdout.write(".")
    sys.stdout.flush()
    failures = set()
    for line in urllib.urlopen(test_page).readlines():
        line_piece = re.search(REG_EXP, line)
        if line_piece:
            piece = line_piece.group(1)
            match = re.search(FAILURE_REG_EXP, piece)
            while (match):
                failures.add(match.group(1))
                match = re.search(FAILURE_REG_EXP, piece[match.start():match.end()])
    if not failures:
        build_ok += 1
    for failure in failures:
        all_failures[failure] = all_failures.get(failure, 0) + 1
        last_seen[failure] = build_id
print
print "Done (found %s build OK)" % build_ok

nbs = [ x for x in list(set(all_failures.values())) if x > 1]
nbs.sort(reverse=True)

for i in nbs:
    for test, nb in all_failures.iteritems():
        if nb == i :
            print "%d : %s (last seen : %s)" % (nb, test, last_seen[test])

这正是我所需要的。谢谢,你用的是哪种版本的詹金斯?简单地尝试了脚本,但没有一个正则表达式匹配。我用的是(1.459版)。@colinjameswebb:我用的是jenkins 1.490,以前我用的是
FAILURE\u REG\u EXP=“”“谢谢你的快速回复!经过进一步调查,这不是regex,而是我们的项目建立了不同的链接。在正则表达式处理结果之前,每个模块都有一个页面。@CédricJulien-除了您提供的方法之外,还有其他方法可以在Jenkins中生成自定义报告吗?我有一个相关的问题-。
Loading 200 builds starting from build number 11032
.........................................................................................................................................................................................................
Done (found 148 build OK)
8 : 'one failing test' (last seen : 10906)
7 : 'another-failing-test' (last seen : 11019)