我们有一堆系统测试,我想整合到Jenkins中。结果我想我可能会尝试并且聪明并使用Nose的Xunit插件来生成结果文件。我的代码如下所示:
from optparse import OptionParser
from subprocess import call
from nose.plugins.xunit import Xunit as xunit
from nose.config import Config
if __name__ == "__main__":
p = OptionParser(usage="A simple wrapper for creating JUnit XML")
p.add_option("-v", "--verbose",
action="store_true", dest="verbose", default=False,
help="generate extra information")
# hook in xunit plugin options
x = xunit()
x.add_options(p)
(options, args) = p.parse_args()
x.configure(options, Config())
for test in args:
test_args = test.split(" ")
test_name = test_args[0]
if options.verbose: print "running: %s" % (test_name)
x.startTest(test_name)
result = call(test_args, shell=True)
if result == 0:
x.addSuccess(test_name)
else:
x.addFailure(test_name, None)
x.report()
然而,当我跑步时,我失败了:
17:24 ajb@sloy/x86_64 [perf_test.git] >./junitify.py -v "/bin/true" "/bin/false" running: /bin/true Traceback (most recent call last): File "./junitify.py", line 39, in x.addSuccess(test_name) File "/usr/lib/python2.7/dist-packages/nose/plugins/xunit.py", line 239, in addSuccess self.stats['passes'] += 1 AttributeError: 'Xunit' object has no attribute 'stats'
通过查看xunit的代码,因为没有设置self.enabled。但是,以这种方式使用Xunit库是否可行并不完全清楚。我正在尝试做什么?这只是误解了这个库应该如何初始化?我应该只使用不同的python库来生成输出吗?
因为我们使用nose在Jenkins下的一大块python代码上运行doctest单元测试,这将是一种耻辱。