打造专属测试平台2-使用Python-Jenkins模块调用Jenkins API,修改Job配置并运行

Jenkins提供了许多API供我们远程调用,而Python-Jenkins模块将它们封装,更加简化了调用相关的操作。

具体需求

比如,最近我在做自动化测试时,想更加灵活的调用测试脚本,于是写了一个Web前端页面去筛选待执行的测试脚本,并将脚本名称通过Jenkins API传递到Job配置中,再执行该Job,即开始测试。

前端页面Demo如下:

筛选完测试脚本后,修改Jenkins Job配置,将构建信息中的红框部分即测试脚本名称,替换成筛选后的脚本名称。

如何实现

为了实现上述功能,该怎么做呢?下面会用到Python-Jenkins模块提供的get_job_config()、reconfig_job()、build_job()方法,达到读取配置,修改配置以及触发job的目的。

import jenkins
import re

def set_job_and_run_testcase(testcase, job_name="demo"):
    # 创建jenkins实例
    server = jenkins.Jenkins("http://my_jenkins_url", username="jenkins_username", password="jenkins_password")
    # 获取job当前的配置
    config = server.get_job_config(job_name)
    # 使用正则表达式,替换job当前配置中的testcase字段
    new_config = re.sub(r'python runner_for_jenkins.py -t ("|").*?("|")',
                        r'python runner_for_jenkins.py -t "%s"' % testcase, config)
    # 使用new_config成为job的配置
    server.reconfig_job(job_name, new_config)
    # 运行job
    server.build_job(job_name)

if __name__ == '__main__':
    set_job_and_run_testcase("testcases/case2.py,testcases/case3.py")

 运行结果:

可以看到成功地修改了Job配置信息。需要说明的是,Jenkins API提供的操作远不止我们现在看到的,它几乎覆盖了Jenkins方方面面的操作,所以Python-Jenkins模块还是非常有用的,感兴趣的朋友可在文后的参考资料中进一步了解。

 

参考资料

  • https://python-jenkins.readthedocs.io/
posted @ 2021-10-12 09:11  酌三巡  阅读(1232)  评论(2编辑  收藏  举报