如何将python单元测试框架文件的输出写入.xml文件以在jenkins上可视化?

时间:2015-05-20 12:08:28

标签: python xml unit-testing jenkins

我有一个python文件testing.py包含以下内容:

import subprocess
import unittest
DETACHED_PROCESS = 0x00000008
def open_exe(file,mode):
    if mode == 1:
        if type(file) is str:
            object = subprocess.Popen([file],creationflags=DETACHED_PROCESS,shell=True)
        if object.pid is None:
            return 0
        else:
            print "Process id ", object.pid
            return 1
   if mode == 2:
       if type(file) is str:
           object = subprocess.Popen([file,"-configuration=" + "Other_base_0x1010.def"], creationflags=DETACHED_PROCESS,shell=True)
       if object.pid is None:
            return 0
       else:
            print "Process id ", object.pid
            return 1
    class testmyfunctions(unittest.TestCase):
       def test_contains_simple_true(self):
          self.assertEqual(open_exe("D:\\learning\\development\\MY_base.exe",1),1)              
      def test_first_process(self):
          self.assertEqual(open_exe("D:\\learning\\Projects\\Other_base.exe", 2), 1)     

if __name__ == '__main__':
    unittest.main()

这个testing.py文件实际打开两个.exe然后我做了两个测试用例。我的问题是如何将testing.py的输出写入xml文件,这些文件将在jenkins上可视化?有一些命令吗? Atleast建议我从哪里开始。

2 个答案:

答案 0 :(得分:1)

首先,将xmlrunner安装到您的从属节点。您可以参考this link以及如何将其与您的unittest一起使用。

秒。回到詹金斯,你需要设置一个有两个步骤的工作:
step1 :"执行Shell"要执行unittest,请确保使用xmlrunner生成xml输出 step2 :"添加构建后操作" ==>"发布JUnit测试报告"然后将报告路径(在步骤1中生成)放在那里。

祝你好运。

答案 1 :(得分:0)

您可以使用nosetests作为测试运行员。它与标准unittest测试兼容,并具有各种输出格式选项。

请参阅:nose.readthedocs.org

要创建JUnitXML,您可以在命令行中指定--with-xunit。因此,要运行测试,只需执行以下操作:

$ nosetests --with-xunit

这将运行您的测试套件,并在当前工作目录中生成名为nosetests.xml的文件。