西安公积金 网站建设,浏阳网站建设卷云网络,免费手机看电影app哪个软件好,检测网站访问量总览#xff1a;
apifox做接口测试后#xff0c;把用例合并组装成测试套件#xff0c;然后apifox-cli通过终端命令实现把套件执行后#xff0c;输出本地文件的测试报告html或json。本地解析后拿到有用的解决通过定时执行推送到企微群里。 然后把html一起推到群里。
这个…总览
apifox做接口测试后把用例合并组装成测试套件然后apifox-cli通过终端命令实现把套件执行后输出本地文件的测试报告html或json。本地解析后拿到有用的解决通过定时执行推送到企微群里。 然后把html一起推到群里。
这个html文件点击打开就是你本地跑的那个html。
一、安装
1、安装Node.js
yum install -y nodejs2、安装npm
yum install -y npm3、安装Apifox CLI
npm install -g apifox-cliApifox CLI 是 Apifox 的命令行运行工具主要用来做持续集成。支持实时运行在线数据和导出数据运行2 种方式。因为后续套件可能去增加用例所以我们选择使用在线数据进行调用。
本地测试一下测试套件中点击持续集成后生成命令然后复制后在终端命令行运行在线数据。 命令类似长这样 apifox run http://xxx/api/v1/api-test/ci-config/xxxx/detail?tokenxxxx -r html,cli
但是要了解下其他伴随指令我只列了目前需要用到的其他的可以这里去找更多选项 apifox持续继承 https://www.apifox.cn/help/cli/#apifox-run-file-source-options -r, --reporters [reporters] 指定测试报告类型, 支持 cli,html,json (default: [cli])--out-dir outDir 输出测试报告目录默认为当前目录下的 ./apifox-reports--out-file outFile 输出测试报告文件名不需要添加后缀默认格式为 apifox-report-{当前时间戳}--database-connection path 指定 [数据库配置] 的所处文件路径使用 URL 测试的时候必须指定4、apifox测试用例中如果有对数据库的校验肯定在后置里已经添加了数据库连接的信息那么在运行时也就需要下载数据库配置文件。如果没有数据库校验则忽略。 二、Java代码部分
1、通过调用终端类执行生成对应的json报告报告生成默认路径为./apifox-reports可以通过加指令指定生成的路径-out-dir /tmp/apifox-reports
String command apifox run https://api.apifox.cn/api/v1/api-test/ci-config/359896/detail?tokenxlH8c24skOlIwGWN08O-d2 -r json,cli --database-connection ./database-connections.json
2、通过调用终端类执行生成对应的html报告,类比步骤1因为html方便查看会把html也发到群里。html的报告可以单独弄个文件夹好读取区分。–out-dir /tmp/apifox-htmlReports
apifox run https://api.apifox.cn/api/v1/api-test/ci-config/359896/detail?tokenxlH8c24skOlIwGWN08O-d2 -r html ,cli --database-connection ./database-connections.json
命令行执行是在网上找到工具类方法主要依赖方法是 process Runtime.getRuntime().exec(command);
CmdUtil类
public static String run(String command,int waitTime) throws IOException {Scanner input null;String result ;Process process null;try {process Runtime.getRuntime().exec(command);try {// 等待命令执行完成process.waitFor(waitTime, TimeUnit.SECONDS);} catch (InterruptedException e) {e.printStackTrace();logger.info(CmdUtil- run(String,int)遇到异常1);}InputStream is process.getInputStream();input new Scanner(is);while (input.hasNextLine()) {result input.nextLine() \n;}result command \n result; //加上命令本身打印出来} catch (Exception e){e.printStackTrace();logger.info(CmdUtil- run(String,int)遇到异常2);}finally {System.out.println(---finally---);if (input ! null) {input.close();}if (process ! null) {process.destroy();}}return result;
}三、拿到json报告并解析
拿到报告解析json报告字段拿到想要的字段。例如套件名称、总请求数、失败数、失败接口的名称
为了简化拿文件的方式我是每次新生成报告文件读取和解析后就删除文件。这样每次文件夹下只有1个文件。 当然也可以自定义生成文件的名称apifox执行命令选项中也是支持的。
File reports new File(json报告的地址);
File[] fileArray reports.listFiles();
String reportPath fileArray[0].getAbsolutePath();
String jsonString new String(Files.readAllBytes(Paths.get(reportPath)));
JSONObject reportObject JSONObject.parseObject(jsonString);
//测试套件名称
String TJName reportObject.getJSONObject(collection).getJSONObject(info).getString(name);
logger.info(测试套件名称 TJName);四、通过企微机器人把json解析内容和html文件发到群里
a、把json解析的内容通过企微机器人推送消息方法推送到企微群里。 text或markdown自己选择。
b、把html文件通过企微机器人的上传文件方法推送上去会返回一个media_id。— 注意这里按照官方文档要求的formdata把刚才的html文件
c、根据企微机器人的推送方法把media_id推上去html文件就可以推送到群里了。
企微机器人的方法不再赘述可以去官网这里去查看。企微机器人文档 https://developer.work.weixin.qq.com/document/path/91770
五、删除生成的json报告和html。
为了方便读取文件我是每次生成读取数据后会去删除文件。这样保证文件夹下只有1个子文件。
//删除json文件
logger.info(执行删除json文件 ----reportPath --- new File(reportPath).delete());
//删除html文件
logger.info(执行删除html文件 ----htmlFile.getAbsolutePath() --- htmlFile.delete());六、定时任务的话就搭配xxljob负责调度调试就行了。
参考我前边写过的文档 https://blog.csdn.net/wang391752/article/details/118019722?spm1001.2014.3001.5502 其他问题
1、如果你需要部署到线上那么先要看看自己线上的数据库是否可以通过数据库地址直连如果不行要么去掉数据库校验部分要么就别部署到线上部署到你数据库连接地址对应环境。(如果你直连数据库地址是qa的你就部署到qa机器上) 2、需要部署到机器上你就需要去机器上下载之前的依赖可以看公司用的什么方式部署机器把node,apifox-cli下载命令放到构建参数里即可。 3、在步骤2中如果有数据库database-connections.json需要扔到机器上可以用公司前端文件存储的域名把json文件放上去跟着构建参数下载到某个路径下去。
对于步骤2和3我是修改了机器构建部分配置重点看下这里 dockerfile中前几行 FROM docker.17usoft.com/base/tomcat-node:v8 #FROM docker.17usoft.com/base/tomcat:v8-jdk1.8.0_191 RUN npm install -g apifox-cli RUN cd /tmp/ curl -O https://xxxstatic.com/database-connections.json
4、如果机器上安装了apifox-cli但是无法访问apifox命令(可以进到机器上运行下试试)也可以尝试使用完整路径去运行
预期这样写
apifox run https://api.apifox.cn/api/v1/api-test/ci-config/359896/detail?tokenxlH8c24skOlIwGWN08O-d2 -r json,cli --database-connection ./database-connections.json可以找到apifox-cli的安装地址改成这样写
node /usr/local/node-v12.13.0-linux-x64/lib/node_modules/apifox-cli/bin/cli.js run https://api.apifox.cn/api/v1/api-test/ci-config/359896/detail?tokenxlH8c24skOlIwGWN08O-d2 -r json,cli --database-connection ./database-connections.json上方apifox命令 等价于 node /usr/local/node-v12.13.0-linux-x64/lib/node_modules/apifox-cli/bin/cli.js 替换后也可以运行的。