• 打造专属测试平台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/

    作者:酌三巡

    感谢阅读,如需转载请注明出处!

  • 相关阅读:
    STL整理之map
    链表及数组模拟链表
    树链剖分详解
    Luogu P3879 【[TJOI2010]阅读理解】
    Luogu P2727 【01串 Stringsobits】
    CF1200D 【White Lines】
    Luogu P4945 【最后的战役】
    Luogu P4944 【PION贪吃蛇】
    Luogu P2426 【删数】
    P2163 【[SHOI2007]园丁的烦恼】
  • 原文地址:https://www.cnblogs.com/zhuosanxun/p/15325431.html
Copyright © 2020-2023  润新知