python接口自动化总结

接口测试流程:

1.测试用例的整理

  • excel管理测试案例,一条案例包括id(案例序号),title(案例描述),method(请求方法),url(请求地址),pre_sql(从sql里取请求接口需要的入参),request_data(请求参数),extract(提取接口返回值),expected(期望返回结果),check_sql(数据库断言sql及期望值)
    入参来源
    【数据库读取,yaml文件读取,随机生成,上一个接口的返回值】
    数据库读取,随机生成,上一个接口返回值:需要用到正则表达式,所以入参需要统一格式#pwd#
    yaml文件读取:入参统一格式KaTeX parse error: Expected '}', got 'EOF' at end of input: …access_token":"…access_token",“uid”:"$…uid"}
    断言:
    接口返回值断言:多个字段断言
    数据库断言:值断言和条数断言

2.框架的整理

【common层 testcases层 outPuts层 testdatas层 conf层】
common层:
读取excel
1.获取指定sheet中所有的行
2.获取所有行中的第一行表头数据存入到列表中
3.遍历除第一行外其他的行,如果有一行的每一列都是空,则跳出循环,如果有一列不为空,则遍历每行中的列,把列的值存放在列表中,最后把表头中每一列和其他行的每一列相对应
存放文件的路径:
1.先获取项目的根目录
2.再获取各个文件的路径,比如配置文件,日志文件,报告文件,测试数据,测试用例
连接数据库并进行查询:
1.建立数据库连接
2.查询语句:查询结果个数,查询一条数据,查询所有数据,更新数据
3.关闭数据库
接口请求:
1.请求头的处理,token及必须的请求头放在一个字典里
2.请求url的处理,如果excel里的url以http://或https://开头,则不拼接基础url,如果不是,则基础url拼接excel的url
3.请求数据的处理,如果是字符串则需要转换成字典格式
4.请求处理,如果是get请求,则是params=self.data,如果是post的form请求,则params=self.data,如果是post的json请求,则son=self.data
存放数据:
1.创建一个Data类,专门用来放数据。用例执行过程中,可以动态设置此类的属性
2.创建一个函数用于提取接口返回值存放在(setattr)中,需要将字符串转换成字典
3.创建一个函数用于数据库查询的数据存放在(setattr)中,首先要判断sql查询条件是否从接口返回值获取,如果是,则需求取出(getattr)值赋给sql,然后再循环字典把值存放在(setattr)中,需要将字符串转换成字典
4.创建一个函数用于随机生成的数据存在在Data中
数据替换:
1.yaml数据替换,判断请求数据里是否有特殊字符,把yaml文件中的数据替换成请求数据中的数据,需要先把字典转成字符串,最终返回的是字典格式
2.接口返回值替换,先正则提取出带“#xxx#”的入参,再调用随机生成的函数判断是否有随机生成数,最后再把Data类中的数据替换带“#xxx#”的数据,需要先把字典转成字符串,最后再转成字典
结果断言:
1.初始化函数里定义存储sql语句查询之后的比较结果
2.数据库断言,分为查询条数断言和查询值断言
(1)值断言
先进行sql查询,然后遍历期望结果,如果期望结果的key在sql查询结果key里且期望结果的value等于sql查询的value,则比较成功,把值存到字典中
(2)条数断言
先进行sql查询,然后比较sql查询结果是否等于期望结果的值,如果等于,则比较成功,把值存到字典中
3.结果返回值断言,利用jsonpath获取接口返回值中的数据与期望值进行比较

4.每条用例执行完后,需要清空对比结果
工具类:
1.随机生成手机号和文本
2.读取yaml文件
3.用yaml文件的数据替换接口中带$的值
4.jsonpath提取值
5.读取ini文件
6.Md5解码
装饰器:
每条案例的执行时间

conf层:
存放公共数据:
1.登录账号
2.通用地址
3.数据库信息
存放接口中需要的数据:
testcases层:
1.conftest.py,处理接口的前置和后置,初始化请求、断言、登录接口
(1)初始化请求和断言函数,前置是初始化请求和断言,后置是请求、断言、关闭数据库和清除对比结果
(2)初始化登录接口,前置把初始化请求函数带入到此,然后请求登录接口获取token,后置是请求、断言和token
2.存放每个接口的案例
testdatas层:
1.管理测试用例
outPuts层:
存放日志:
历史日志和新生成的日志
测试执行入口:
1.将上一次的日志报告移动到history文件中
2.日志输出
3.执行案例
(1)可指定运行某些案例
(2)生成allure报告之前先清除之前的allure报告
(3)支持失败重试
(4)也可以支持多线程(由于接口自动化的案例有的不是单独的,所以不适合做分布式)
分布式执行用例的设计原则(重中之重的重点)

  • 用例之间是独立的,用例之间没有依赖关系,用例可以完全独立运行【独立运行】
  • 用例执行没有顺序,随机顺序都能正常执行【随机执行】
  • 每个用例都能重复运行,运行结果不会影响其他用例【不影响其他用例】

3.用例执行流程

全局:前置后置
1.打开excel,读取对应的接口数据
2.定义一个测试类:写接口的测试用例,使用数据驱动
3.处理请求数据:若有替换就替换
4.发起请求:有token就要传递token
5.得到响应结果
6.如果有提取则提取
7.如果有响应结果断言:做
8.如果有数据库断言:做

关于多线程执行的文章:https://www.cnblogs.com/poloyy/p/12694861.html

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值