# Interface-test-tool **Repository Path**: qiang_yan_wen/interface-test-tool ## Basic Information - **Project Name**: Interface-test-tool - **Description**: 个人开发的接口测试框架 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-12-21 - **Last Updated**: 2024-11-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### Interface_test_tool 接口自动化测试工具 By `YAML` ##### 全局配置文件 默认会***软***加载文件名为`suites/config_center.yaml`的文件,该文件包含这2部分 1. `config`(全局的配置信息), 会与`自定义驱动配置文件`里面`config`合并起来,以后者为准 2. `steps`(全局的接口脚本), 可在`自定义驱动配置文件`下的`invoke`(数组格式)直接指定其名称,比如`全局函数-单点登陆` 示例全局配置文件 ```yaml config: env: base_sso_host: prod: https://sso1.clickpaas.com default: https://sso1.clickpaas.com base_app_admin_host: prod: http://app-admin.clickpaas.com default: http://app-admin.clickpaas.com constant: username: 17090101241 password: welcome123 origin_url: app-admin.clickpaas.com steps: - name: 全局函数-单点登陆 pre_action: - "{{sleep_for(3)}}" request: url: "{{protocol}}://{{base_sso_host}}/api/sso/login/password" method: POST header: Content-Type: application/json json: origin: "{{origin_url}}" loginName: "{{username}}" password: "{{password}}" fingerprint: "167e162d6939e942d7b7d889f977de18" assertion: response: - path: $.code operator: "=" expect: 200 extractor: cookie: - name: sessions scope: sso path: . ``` ##### 自定义驱动配置文件(真正执行,编写接口用例) `yaml`配置里面所有`{{xxx.yyy.zzz}}`变量会根据`jinja2`库进行缓存变量或者自定义函数替换(目前内置自定义函数有限,可自行添加); 目前功能包含以下这些: 1. `config`配置中心, 包含常量以及根据运行环境切换的变量; 只对当前的`suite`(yaml文件)有效 2. 每个接口测试用例维护在`step`里面,可维护`name`(定义接口名称), `invoke`(引用全局的脚本), `request`(接口请求对象), `assertion`(断言规则), `extractor`(数据提取/缓存规则)这3个对象 3. 在`request`对象下,根据`python`提供的官方标准库`requests`,目前支持`url`(或者`host`, `path`), `method`, `header`, `cookie`, `query`, `json`, `data`, `files`参数 4. 在`assertion`对象下,支持`response`, `header`断言规则设置 5. 在`extractor`对象下,支持`cookie`, `header`, `body`数据提取规则设置 示例测试用例 ``` yaml name: 演练测试1 groups: - name: 测试用例集0 steps: - invoke: - name: 全局函数-单点登陆 arguments: username: "17090101241" password: "{{password}}" fingerprint: "167e162d6939e942d7b7d889f977de18" - name: 测试获取用户登陆信息 request: url: "{{protocol}}://{{base_app_admin_host}}/api/eadmin/tenant/obtainUserInfo" method: GET pre_action: - "{{sleep_for(3)}}" - "{{retry(5,3)}}" assertion: response: - path: $.code expect: 200 operator: "=" - invoke: - name: 全局函数-注销登陆 ``` #### 关于通过docker手动方式运行 如果需要通过`docker`方式手动运行,则命令为 ```shell script docker run -v ${PWD}/workspace:/app/workspace -d # 后面的参数支持run_suite.py所有参数,即--env, --config-center, --user-tag, --suites # 如果需要额外执行宿主机上的测试用例(yaml),可用挂载方式进行,比如 docker run -v ${PWD}/workspace:/app/workspace -d registry.bizsaas.net/qa/clickpaas-api-test:release-op-ca21c60643aea7351dec7a3f6b5058e233e14e4f --suite ${PWD}/workspace/demo_new.yaml ``` 最终在宿主机`workspace`会生成`report.html`(定制版的`pytest-html`)以及`clickpaas.log`日志,具体报告见下图 ![](https://unmurphy-pic-store.oss-cn-beijing.aliyuncs.com/20210104101902.png)