http:超文本传输协议,基于请求与响应的应用层协议
作用:规定了客户端与服务器之间的信息传递规范,是二者共同遵守的协议
组成:
为什么要有接口规范?
为了让前后端开发人员更好的配合,提高工作效率。
特点:
1. 请求api的url用来定位资源
2. 通过标准的http方法,对资源进行增删改查等操作
3. 利用http状态码,返回状态信息
1. 提取测试点:
使用功能测试的方法,通过业务流程图,梳理测试点,提取业务路径到xmind中。
2. 解析接口文档:
问:为什么要解析接口文档?
答:熟悉接口信息,为设计接口测试用例做准备
问:接口文档一般由谁编写?作用是?
答:一般由后端开发编写,用来描述接口信息的文档
问:如何进行接口文档解析?
答:
1)分析接口之间的依赖关系
2)分析接口请求(如 url,请求方法,请求头,请求参数类型,请求参数等)
3) 分析接口响应(如 响应状态码,响应数据等)
3. 编写测试用例
根据接口文档和提取的业务路径,编写测试用例:
ID | 模块 | 优先级 | 用例名称 | 接口名称 | 前置条件 | 请求URL | 请求方法 | 请求头 | 请求参数类型 | 请求参数 | 预期结果 |
---|---|---|---|---|---|---|---|---|---|---|---|
… |
步骤:
步骤:
步骤:
ID | 模块 | 优先级 | 用例名称 | 接口名称 | 前置条件 | 请求URL | 请求方法 | 请求头 | 请求参数类型 | 请求参数 | 预期结果 |
---|---|---|---|---|---|---|---|---|---|---|---|
… |
# 常用的断言方式有:
# 1、断言响应状态码
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
# 2、断言响应text是否包含特定文本
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
#3、断言响应json 的某个值,是否与预期结果相等
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
自动化测试框架目录结构:
# 导包
import request
# 发送request请求,并返回响应
# request.请求方法 发送相应的请求,并返回响应结果
# 参数 json 提交json数据;参数headers 提交 headers 数据
response = request.get(url="", json=, headers=)
# 打印响应
print(response.status_code)
print(response.text)
print(response.json())
1、封装接口
# 在api文件夹中创建对应接口文件
# 在该文件中对该接口进行封装
# 导包
import request
# 创建接口类
class LoginAPI:
# 初始化
def __init__(self):
# 定义当前接口url
self.image_api = "" # 获取验证码url接口
self.login_api = "http:..." # 登录url接口
# 封装接口,并获取响应结果
def image(self):
return request.get(self.image_api)
def login(self, login_data):
return self.post(self.login_api, json=login_data}
2、编写测试用例
# 在script文件夹中创建py文件
# 导包
from api.login import LoginAPI
# 创建测试类
class TestLoginAPI():
# setup
def setup():
# 实例化接口对象
login_api = LoginAPI()
# teardown
def teardown():
pass
# 编写测试用例
def test_login_success():
pass
3、 数据驱动实现
# 导包
import pytest
# 定义数据,每条数据以元祖的形式组织,并通过列表组合起来
test_data = [(1, 2...), ()]
# 在用例前使用pytest的装饰器
@pytest.mark.parameterize("参数1,参数2...", test_data)
def test_login(self, 参数1,参数2...):
pass
4、json文件实现数据驱动
#将每条数据以json的形式组织,然后通过列表组织起来,放在data文件夹下,保存为xxx.json
编写方法,将json文件读取,并将json列表组织的形式转化为元祖列表组织的形式
结合步骤3,使用pytest的装饰器 @pytest.mark.parameterize 以实现json文件数据驱动
5、config文件使用
congfig文件中保存基本的url 和 项目的路径等基本信息