《上海悠悠接口自动化平台》-1.新增API 与 各参数的描述
前言
每个API 对应一个接口,每个API 的关键字参数根据httprunner2 框架来定义的
API 描述
我们先看一个简单的登录接口,接口描述如下
访问地址:/api/v1/login/请求类型:POST请求头部:application/json请求参数:{"username":"test", "password":"123456"}
需注意的是接口地址,只需要写相对路径,比如http://127.0.0.1:8000/api/v1/login/
前面的http://127.0.0.1:8000
这部分是环境地址,因为环境是可变的,
环境会有多套:
- 开发环境
- 测试环境
- 联调环境
- 预发布环境。
所以不要在接口地址里面把环境地址写死了
小笔记
如果你的接口地址里面带有 `http/https` 前缀的绝对地址, 那么你选运行环境的时候,环境会无效,运行的时候根据你写死的地址运行
如果你的接口地址是相对地址`/api/v1/login/`, 那么可以选不同环境运行
对照api的yaml文件
name: login case1
request:url: http://127.0.0.1:8000/api/v1/login/method: POSTheaders:Content-Type: application/jsonUser-Agent: python-requests/2.18.4json:username: testpassword: 123456
validate:- eq: [status_code, 200]
参数解释:
参数 | 是否必须 | 作用 |
---|---|---|
name | 必选 | 接口的名称 |
request | 必选 | requests库的request 对象 |
validate | 可选 | 校验结果,api层只做接口基本校验,比如状态码 |
request 参数
request 参数对应 requests 库里面的 Request 对象
import requestss = requests.Session()
r = s.request()
可以点进去request 看源码可以支持哪些参数
def request(self,method,url,params=None,data=None,headers=None,cookies=None,files=None,auth=None,timeout=None,allow_redirects=True,proxies=None,hooks=None,stream=None,verify=None,cert=None,json=None,)
创建一个Request
# Create the Request.req = Request(method=method.upper(),url=url,headers=headers,files=files,data=data or {},json=json,params=params or {},auth=auth,cookies=cookies,hooks=hooks,)
如果你对requests有过一些基本的使用,结合上面的源码,那就很清楚每个参数是干什么的了
参数解释:
参数 | 是否必须 | 作用 |
---|---|---|
method | 必选 | 请求方式:GET/POST/PUT/DELETE |
url | 必选 | 尽量写相对路径: /api/v1/login/ |
type | 可选 | 这个是区分参数类型:params/json/data |
Query Params | 可选 | url上的查询参数,如:/api/data?page=1&size=10 |
json | 可选 | POST 请求的JSON 类型参数,application/json 格式 |
data | 可选 | POST 请求的data 类型参数,application/x-www-form-urlencoded 格式 |
headers | 可选 | 请求头部参数 |
前面的登录接口示例
这里headers 参数可以不用加,type类型选了json,会自动在请求头部加上application/json 格式 (这是requests框架自带的功能)
变量的声明与使用
账号和密码不能写死了,因为可能在其它地方会用其它账号登录,需要复用API接口
变量的声明格式$varname
,需注意的是变量必须放在字符串中声明,如上图。
声明变量后,必须要设置变量,不然用例转换不通过
这里的变量值给个初始值,方便调试通过
Validate 校验结果
接下来就是断言的使用,当用例运行完之后,我们需要添加检查点,校验返回结果。
API 层我们不需要加业务逻辑校验,只做接口基本校验,这里的接口还不涉及业务逻辑,简单的判断是200 OK就行了,或者校验结果返回的是JSON格式
Response 对象
那么校验的时候,有哪些对象可以使用呢?如果check地方写的语法不正确,那么会有以下报错
available response attributes: status_code, cookies, elapsed, headers, content, text, json, encoding, ok, reason, url.
可以接收的 response 对象
status_code: 状态码200, 404 等
cookies: cookies
elapsed: 响应时间
headers: 返回头部
content: 响应内容的bytes数据
text: 响应内容的文本数据
json: 响应内容的json数据
encoding: 响应编码
ok: 返回bool值,状态码小于400为True
reason: 状态码对应的描述,如:OK, NOT FOUND等
url: 完整url地址
如果你对requests框架熟悉,那么跟Response定义是一一对应的
class Response:"""The :class:`Response <Response>` object, which contains aserver's response to an HTTP request."""__attrs__ = ["_content","status_code","headers","url","history","encoding","reason","cookies","elapsed","request",]
提取返回结果
我们在提取返回结果的时候,经常会用到
- status_code 响应状态码
- body或content 响应body内容
- headers 响应头部
比如我们响应的头部内容
返回的头部以字典方式返回
{ "Date": "Thu, 20 Oct 2022 14:21:09 GMT", "Server": "WSGIServer/0.2 CPython/3.6.8", "Content-Type": "application/json", "Allow": "POST, OPTIONS", "X-Frame-Options": "SAMEORIGIN", "Content-Length": "110", "Vary": "Cookie", "Set-Cookie": "sessionid=in28ks6u92r7bvreklxcysdkuhklff3w; expires=Thu, 03-Nov-2022 14:21:09 GMT; HttpOnly; Max-Age=1209600; Path=/" }
于是可以通过点的方式取值
headers.Content-Type
这样就能取到对应的值"application/json"
如果是需要提取body内容
{
"code": 0,
"msg": "login success!",
"username": "test1",
"token": "eeefb5f49316d9ecba367473fae6130b595cb7be"
}
于是可以这样取值
body.code
body.token
注意:并不是所有的token取值,都是body.token, 还有一种情况,token可能嵌套在data里面
{ "code": 0, "msg": "login success!", "data": {"token": "eeefb5f49316d9ecba367473fae6130b595cb7be" ,"username": "test1"}
}
那么token取值是这样的
body.data.token
小笔记
1.body 和 content 通用
2.字典取值body.key名称,如果有嵌套:body.key.嵌套的key, 继续点取值
学到这里一些基础的概念差不多的都掌握了,还有一些复杂场景:hooks 和extrat 功能没有讲到。
《上海悠悠接口自动化平台》-1.新增API 与 各参数的描述相关推荐
- 搭建or部署接口自动化平台从零到一的过程
接口自动化部署or搭建目录 前言 搭建 前端环境 后端环境 部署 部署环境 前端部署 后端部署 第一种方式后端部署 第二种方式后端部署 前言 首先感谢cheeath大佬的支持和帮助,自动化平台成功在服 ...
- 开源接口自动化平台sosotest的使用心得
开始接触接口测试的时候,使用的jmeter,当时还是一个同事给分享了jmeter的基本操作功能. 后来研究接口自动化,想要利用jmeter来做这个,逐渐用上了数据库连接,前置,后置等略微高级一些的功能 ...
- 第四:SpringBoot生成Api管理mysql内保存的测试数据(接口自动化平台扩展)
本篇文章讲解的是通过api去管理mysql内存储的测试数据,使用的是SpringBoot框架,同样是使用java语句. 关于SpringBoot的环境搭建,在之前的文章内讲解过,本篇不做过多叙述,有疑 ...
- API接口开放平台-淘宝API接口详解
为了进行电商平台 的API开发,首先我们需要做下面几件事情. 1)开发者注册一个账号 2)然后为每个 应用注册一个应用程序键(App Key) . 3)下载 API的SDK并掌握基本的API基础知识和 ...
- 接口自动化平台(一):antd + antd pro 安装和简介
目录 1. antd 1.1 进入ant.design官网做初步了解 1.2 安装antd 1.3 动手实际操作 2. ant design pro 2.1 antd pro介绍 2.2 antd p ...
- RestCloud API接口管理平台
RestCloud API接口管理平台 RestCloud API管理平台是完全自主研发的企业级统一API接口管理平台,本平台不但可以从Java代码中的注解自动扫描生成API文档还能通过OpenAPI ...
- apache ant 安装_Jmeter+ Ant+jenkins 接口自动化框架实现
一.文件配置 •编写jmeter脚本 •上传jmx脚本到jmeter目录下,新建一个Loadtest目录, •在Tomcat webapp 文件夹下面新建报告输出文件夹testReport: •将jm ...
- 利用自动化平台可以做的那亿点事 |得物技术
前言 相信大家对接口自动化已经不陌生了,这是几乎我们每个迭代都会投入的事情,但耗费了这么多精力去编写和维护,实际的收益如何呢?如果收益不好,是不是说明我们自动化 case 的实现方式.使用方式还有改进 ...
- 测试自动化平台 | 测试开发工程师的进阶之路
https://mp.weixin.qq.com/s/WU5h8FW6BT5YZtlsSuCIcw 「摘要」随着近几年国内IT行业高速发展,对测试工程师的要求也越来越高,其作用也越来越重要,但很多测试 ...
- 理想中的接口自动化项目
如何评价接口自动化项目 我理想中的接口自动化项目,是有一套脚本,能够100%覆盖核心业务场景,能够回归线上频繁出现的问题,能够支持手工无法验证的场景,能够抛出偶现问题,能够包含容易遗漏的边界场景.异常 ...
最新文章
- 虚拟机无法使用网卡桥接模式
- 01-iOS获取系统iTunes音乐
- django-rest-framework第一次使用使用常见问题
- 云计算的发展趋势_2020年的云计算发展趋势预测
- PyTorch: cannot import name ‘container_abc‘ 或者 ‘int_classes‘ form torch._six
- 【Elasticsearch】ARS提升检索吞吐率
- 做游戏,学编程(C语言) 13 消灭星星
- centos mysql-5.5.20_mysql-5.5.20+CentOS 6.2 编译安装全过程详解(2)
- 层次选择器[selector_2.html]
- php 时分秒转时分_php 时分秒转为秒,秒转化为天时分秒
- linux rs232驱动程序,Ubuntu安装USB to RS232驱动
- matlab 从 excel读取 日期_MATLAB一键记账它不香吗?
- Autojs4脚本大合集(薅羊毛专业版的脚本)
- Liu C-2021-1: Nontrivial Gates FET
- 使用 KNX Manufacturer Tool 编写 knx 数据库的步骤
- 第41章 	RS-485通讯实验—零死角玩转STM32-F429系列
- 【转载】路由器的原理与作用
- 大规模数字设计的特点
- 用linux命令操作手机,Linux基本操作
- 微信公众号怎么设置下载文件