接口自动化知识梳理
- 学习知识块:基础知识 类与对象 单元测试 requests openpyxl pandas re ddt unittest mysql logging
- 框架梳理
- 学习方式:靠时间堆 思考清楚
- http请求类:写2组数据在Python里面。
- 单元测试类:写2组数据在Python里面。
- 解决数据的分离:数据写到Excel里面去。
- 解决参数的依赖关系。
- 解决参数的自动化做参数的问题。
- 数据库校验 期望结果。
学习目的
1.加深对自动化的理解:功能自动化。
2.需求分析。
3.掌握数据分离/代码分离/文件分离的概念。
1.为什么要去做自动化?
自动化的本质是让工作更加方便轻松。
稳定性测试,维护性测试,回归测试的时候用自动化。
新加的功能不可以做自动化,必须手工去做。
例如如果参数替换格式不对怎么办?
如果这个参数是不必要做参数化的,对数据的格式有强烈的要求,这样的情况建议不做参数化。
设计自动化的时候:框架非常重要,思路也很重要。
2.测试数据
放哪:excel--DoExcel 专门负责读取数据。
怎么读:用例的可配置。
参数化:每次会自动的更新测试数据--省去手工操作。
特殊点:注册手机号的处理。
Excel写一个初始化手机号。
sql语句查询当前存在的最大的手机号,在此基础上 1.
写死的手机号---不推荐。
数据的替换:参数化之后--读取数据时要进行替换。
期望结果:参数化的地方做好替换。
实际结果:
写入Excel里面去。
利用断言与期望结果做比对。
测试结论:
通过就pass,不通过就fail,同步写入测试结果进去。
3.接口自动化测试思路
1.利用单元测试去执行用例。
2.把测试数据和测试结果存在Excel里面。
3.把整个代码的运行过程放在日志里面。
4.执行的报告会生成html。
5.利用ddt还有其它的一些处理方式。
第一步考虑测试数据,测试数据不仅包括我请求的那些数据,包括针对不同的模块,如果尽可能想用参数化的话,比如地址,参数,期望结果,实际结果等这些都可以存到Excel里面去。
这样做就是为了提高代码的复用性,让它的改动尽量少一点。不管哪个模块的用例,都可以用这套框架去跑。
把数据放进去只是第一步,怎么去读,怎么去执行,执行哪一些?都涉及一个可配置,也就是让用例活起来。
4.参数化:标记。
通过代码处理数据,链接数据库,自动更新。
手机号注册:手机号 1
或者去数据库查询一个最大的手机号去做操作。
5.数据的处理:包含请求数据和请求结果。
怎么去写回,怎么去做,怎么去把它写进去,怎么去定义这个结果。
6.ddt
拿到数据进行拆分,方便拿到多少数据就执行多少条用例。
7.数据库校验
不同的数据库需要不同的数据驱动。
需要校验吗?
涉及金额的变化的一些正常操作,做校验多点保障。
数据库校验:用户的金额,账户这些,肯定会检查账户的。
如果不校验数据库,全写在Excel里面,全靠眼睛看期望值实际值,是比较困难的。
利用数据库完成数据的查询。
数据库如何写成一个类?
配置文件 数据库操作类。
8.应该要用哪些框架或者思路?
Excel 请求 mysql
Excel存请求数据和结果。
请求就是http请求帮你完成请求,最后查询数据,还是要写回Excel。
Http:requests
sokect:Python什么库支持这个协议。
webservice:suds库。
dubbo
在不太懂这个协议怎么用的时候,先写成框架,先发一个请求,能够请求成功之后,再去考虑把它封装成类,然后进行单元测试,数据参数化,写回结果。
框架:写的这一整套代码就是框架。
就是第三方模块的学习,把它组装,然后就成了框架。
例如我写的http接口的框架,以后遇到别的http接口,可以按照这个套路去做,改下用例,稍微改下里面的代码就可以了,这个就是框架的意义。
框架:步骤 思路 用到哪些技术?
unittest ddt openpyxl mysql requests config log email jenkins unittest python ddt
9.必会:每个接口跟数据表的一个对应关系。
10.普及数据分离/代码分离/文件分离的概念。
11.补充
soapui看看webservice有什么接口地址。
13083138929
根据手机号码的后3位去进行存储,举个例子,13083138929,那么短信验证码会存在29库,89表。
如果找短信验证码,写sql语句根据手机号码去查,找到对应的库,找到对应的表,这就是分表分库设计。
任何地址,不管是用任何工具还是写代码,还是各种请求,地址后面不能有空格,有空格就不识别这个地址。
12.遇到报错怎么办?
对于小白来说,打印比Debug好用。如果发现报错了,可以打印下。
哪行报错了,就在调用之前和调用后给它打印出来。
自己解决的问题,才会记得住!!!
鱼的记忆,所以做笔记很重要!!!
勤动手写,不要老是问别人,实在自己解决不了的情况下,问了别人,找到了答案,切记一定要记下来!!!!
13.返回结果要关注什么?
关键字段。
跑接口最关注的是状态码是不是对的,前期功能测试都测过了,所以只考虑code或msg,以这种进行校验就可以了。
不同的数据库用不同的数据驱动。
14.unittest核心步骤
15.常识
web自动化很重要!
先学web再学app。
先熟悉业务,才能写框架。
初步框架1-2周,1个月时间完成。
写框架需要接口地址,接口需求文档。