持续集成六接口自动化测试
部署完成,需要触发自动化测试任务
之前,搭建了一个测试平台,用于维护接口的测试用例,平台中提供一个url,用于触发整个测试计划的执行
该地址支持get或者post请求,post请求时,会把请求的参数记录到执行日志里面(比如传入调入方身份信息 等内容)
结果返回共执行了多少个用例,成功多少,失败多少
那现在的目标是,在Jenkins中调用该url,同时根据返回的结果来判断是否通过
仔细想了想还是通过python来调用更简单
新建一个py文件,
# -*- coding:utf-8 -*- import requests import json import sys # 初始化结果 ff = open(r'autoTestPollAPI.txt', 'w', encoding='utf-8') ff.write("1") ff.close() build_id = sys.argv[1] build_url = sys.argv[2] father_id = sys.argv[3] father_url = sys.argv[4] version = sys.argv[5] url = "http://10.101.20.58:8000/runTaskForJenkins/5" # 触发测试计划的url data = {"build_id": build_id, "build_url": build_url, "father_id": father_id, "father_url": father_url, "version": version} rel = requests.post(url, data=json.dumps(data)) text = rel.text # text = rel.text.encode('latin-1').decode('unicode_escape') print(text) res = json.loads(text) f = open(r'autoTestPollAPI.txt', 'w', encoding='utf-8') if res['fail'] > 0: f.write("1") else: f.write("0") f.close()
然后 jenkins 执行该文件即可
新建一个自由构建任务
Build 执行windows批处理命令,
参数过构建过程加一个版本号
用例测试通过后,更新项目的当前版本号,测试不通知,则获取当前版本号,触发回滚任务
@echo off d: cd D:/AutoTest python AutoTestPollAPI.py %BUILD_NUMBER% %BUILD_URL% %f_id% %f_url% %BUILD_NUMBER% set res=D:\AutoTest\autoTestPollAPI.txt rem set /p a=<%res% echo.%a% if %a% equ 1 (exit 1) else (exit 0)
执行python之后,写入测试结果,批处理直接读取该文件
结果是1 执行 exit 1 标识失败 ;结果是0 执行exit 0 ,标识成功
如果 提示 系统无法执行指定的程序 服务-jenkins 设置管理员账号
提示 不是内部命令
添加一下环境变量 保存 重启jenkins
该任务由部署任务构建成功后来触发
下面就是jenkins多任务调用