基于数据驱动的接口自动化框架封装

1.数据驱动框架设计
1.框架结构
common: 这是一个package,主要用来存储所有的底层代码封装

logs: 这是一个目录,主要用来存放日志文件

report: 这是一个目录,里边的data表示测试结果数据,里边的html表示测试报告,注意这两个目录都是每次执行测试时自动生成的

testcases: 这是一个目录,主要用来存储excel文件,excel文件里是接口测试的相关数据

conftest.py: 重写pytest自带的一个内置函数的,统一管理自定义fixture的

pytest.ini: pytest相关的配置参数

run.py: 是整个框架执行的入口

2.excel数据规则设计
按照一定的维度进行分类,每个分类可以当做一个sheet工作表

全局变量

主要用来管理我们的公共数据

变量名称 变量值
host http://82.xxx74.xx:xxxx
username 18866668888
password 123456
接口默认参数

通常在一个项目中,参数如果很多的时候,我们针对测试用例去传递数据就会很麻烦,所以我们针对每个接口的默认参数数据进行单独管理,在测试时只需要针对当前测试用例传递你要测试的某个字段值即可,其他字段统统来自于默认参数

填写参数的规则:对于接口参数可能会有多种类型,表单的,查询的,json的,文件的等等

表单类型时:

{
“data”:{
“xxx”:“xxjsdhdh”
}
}
查询参数:

{
“params”:{
“xxx”:“xxjsdhdh”
}
}
json参数:

{
“json”:{
“xxx”:“xxjsdhdh”
}
}
混合参数,比如既有表单又有查询:

{
“params”:{
“xxx”:“xxjsdhdh”
},
“data”:{
“ddd”:“ddff”
}
}
接口名称 默认参数
登录 { “data”:{ “username”:“ u s e r n a m e " , " p a s s w o r d " : " {username}", "password":" username","password":"{password}” } }
新增客户 { “json”:{ “entity”: { “customer_name”: “沙陌001”, “mobile”: “18729399607”, “telephone”: “01028375678”, “website”: “http://mtongxue.com/”, “next_time”: “2022-05-12 00:00:00”, “remark”: “这是备注”, “address”: “北京市,北京城区,昌平区”, “detailAddress”: “霍营地铁口”, “location”: “”, “lng”: “”, “lat”: “” } } }
新建联系人 { “json”:{ “entity”: { “name”: “沙陌001联系人”, “customer_id”:“${customerId}”, “mobile”: “18729399607”, “telephone”: “01028378782”, “email”: “[email protected]”, “post”: “采购部员工”, “address”: “这是地址”, “next_time”: “2022-05-10 00:00:00”, “remark”: “这是备注” } } }
新建产品 { “json”:{ “entity”: { “name”: “python全栈自动化”, “category_id”: 23, “num”: “98888”, “price”: “6980”, “description”: “接口/web/app/持续集成” } } }

测试集合管理

测试集合管理 主要是为了控制要执行哪些测试集合,以及测试集合执行的顺序

测试集合名称:对应的就是某个测试集合的sheet工作表名称

是否执行:只有值是y时才会被执行,其他值不会被执行

测试集合名称 是否执行
新增客户接口测试集合 y
新建联系人接口测试集合 y
新建产品接口测试集合 y
测试集合

每个测试集合在excel里是一个单独的sheet工作表,他负责某个模块或者某个接口相关的测试用例数据管理,一个测试集合中是可以存在多个测试用例的

序号:仅仅只是个标识,没啥作用

用例名称:一个用例可能会有多个接口的先后调用,在excel里一行数据就是针对一个接口的调用,多行数据就是多个接口的调用,如果一个用例需要用多行数据,那么这几行的用例名称保持一致

接口名称:该列主要是为了和接口默认参数中的接口名称进行关联,通过接口名称得到该接口对应的默认参数,然后再根据测试数据来决定参数是什么

接口地址:表示接口地址,在接口地址里域名几乎都是相同的,或者说是公共的,所以我们将域名作为了公共变量进行存储,那么在这里需要调用公共变量域名,调用方式${host},host就是公共变量中的一个变量

请求方式:get/post/put/delete

接口头信息:指的就是headers,对于一个接口来说不一定有特殊的头信息,那么就不填,如果有需要按照如下格式进行填写,以json格式字符串的方式:

token是要从登录接口的返回值中提取的,提取之后保存到一个变量中,咱们这里保存的变量名称叫做token,所以在这里引用了变量token,引用方式就是${token}

{
“Admin-Token”:“${token}”
}
假如特殊的头信息有多个,写法就是在json字符串中继续追加键值对,比如:

{
“Admin-Token”:“${token}”,
“Content-Type”:“application/json”
}
测试数据:指的是在接口发起调用时传递的你要测试的某个数据,对于一个接口来说参数有很多,但是我们每次测试时,可能只是针对一两个参数进行测试,可以借助之前所学的通过jsonpath去匹配某些参数,并且替换他们的值

设计思路:

一个json格式的字符串,其中参数类型分为data、json、params、files

其中的key是你要替换的目标参数对应的jsonpath,value就是该参数对应的新值,也就是测试数据

{
“json”:{
“$.entity.customer_id”:999999999,
}
}
如果要替换多个参数:

{
“json”:{
. e n t i t y . n a m e

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值