文章目录
测试脚本接口自动化
前置条件
- 已创建了 API 请求集(示例名为:api-collects)
- 已创建了 API 请求(示例名为:api request1)
- 已创建了环境变量(示例名为:demo)
- 也为 API 请求编写了 assert 或者 tests 脚本
接口自动化项目 demo
- 安装 node.js
- 安装 npm
- 新建项目文件夹(示例名为:bruno-test)
- 项目文件夹下执行 npm init 将项目初始化为 npm 项目
- 安装 @usebruno/cli 依赖 (脚本为:npm install @usebruno/cli)
- 打开保存 API 请求集的文件夹目录,将 api-collects 目录下的所有文件都复制到 bruno-test 项目目录下下
- 项目目录如下所示
bruno-test //项目主文件夹
api request1.bru //api 请求
enviroments //环境变量
demo.bru
bruno.json
node_modules //node 包依赖package-lock.json
package.json //npm 项目配置文件
- 运行接口自动化脚本
bruno run --env demo
- 运行结果如下
接入 CI
接入 github action
以 github action 为例,其他 CI 工具类似
- 前置准备:在项目 package.json 文件中添加如下脚本
"test":"bru run --env demo"
- 在项目根目录下创建 .github/workflows 文件夹
- 在 .github/workflows 文件夹下创建 main.yml 文件
- main.yml 文件内容如下
name: bruno cli CI
on:push:branches:[ main ]pull_request:branches:[ main ]jobs:run_bruno_api_test:runs-on: ubuntu-latest
steps:-uses: actions/checkout@v3
-run: npm install
-name: run tests
run: npm run test
- 提交代码到 github,会自动触发 github action
- 查看 github action 运行结果,如图示例:
可拉取本项目代码进行参考:https://github.com/dengnao-tw/Bruno-API-Test-Starter
Postman 脚本迁移
API 请求集迁移
- 在首页点击‘Import Collection’链接,打开导入 API collection 的弹窗
- 点击选择 Postman Collection 的链接,再选在已存在的 Postman 请求集文件路径
- 即可导入 Postman 的请求集
- 但是目前只支持导入 API 请求,无法导入测试脚本,如图所示(但不影响请求调用)
环境变量迁移
- 在首页选择刚才导入的 Postman 请求
- 点击页面右上角的‘No Environment’链接(默认为 No Environment),选择菜单中的 configure 按钮即可打开环境变量管理弹窗
- 点击‘Import Environment’链接,打开导入 Environment 的弹窗
- 点击选择 Postman Environment 的链接,再选在已存在的 Postman 环境变量文件路径
- 即可导入 Postman 的环境变量
测试脚本迁移参考
两个工具测试脚本的语法存在一部分差异,需要手动修改
- Postman 测试脚本语法参考:https://learning.postman.com/docs/writing-scripts/test-scripts/
- Postman 测试脚本示例
pm.test("res.status should be 200",function(){
pm.response.to.have.status(200);});
pm.test("res.body should be correct",function(){var data = pm.response.json();
pm.expect(data.id).to.equal(1);
pm.expect(data.title).to.contains('provident');});
- Bruno 测试脚本语法参考:https://docs.usebruno.com/testing/introduction.html
- Bruno 测试脚本示例
test("res.status should be 200",function(){const data = res.getBody();expect(res.getStatus()).to.equal(200);});test("res.body should be correct",function(){const data = res.getBody();expect(data.id).to.equal(1);expect(data.title).to.contains('provident');});
更多信息
- 我的个人博客:https://naodeng.com.cn/
- 我的QA自动化测试快速启动项目:https://github.com/Automation-Test-Starter
本文转载自: https://blog.csdn.net/dengnao/article/details/134124381
版权归原作者 软件测试同学 所有, 如有侵权,请联系我们删除。
版权归原作者 软件测试同学 所有, 如有侵权,请联系我们删除。