天天看点

接口自动化测试(Python+Requests+Unittest)

接口自动化测试(Python+Requests+Unittest)
接口自动化测试的优缺点:

优点:

测试复用性。

维护成本相对ui自动化低一些。

回归方便。

可以运行更多更繁琐的测试。自动化的一个明显的好处是可以在较少的时间内运行更多的测试。

缺点:

不能完全取代手工测试。(自动化永远不能替代手工测试,只是提高测试效率)

手工测试比自动化测试发现的缺陷更多,自动化测试不容易发现新的bug。

get请求和post请求的区别:

get请求一般是从后台服务器上获取数据用于前端页面的展示(例如:看到列表页面等),post请求是向服务器传送数据(登录、注册、上传文件、发布文章)。什么时候用get,什么时候用post取决于开发。无论用post请求还是get请求,都能完成对数据的增删改查,分不同的请求方式更多的是一种约定。

get请求的请求参数是拼接在url后面的,只能以文本的形式传递参数,请求参数会显示在地址栏,数据长度受限于url的长度,传递的数据量小(4kb左右,不同浏览器会有差异),post请求的请求参数是放在request body里面,传递数据量大(默认8m),对数据长度也没有要求。get请求可以在浏览器中直接访问,而post请求只能借助工具完成(比如:postman、jmeter)。

get请求速度快,安全性不高;post请求一般用于像登录这种安全性要求高的场合,请求不会被缓存,也不会保留在浏览器的历史记录中。

前后端分离

开发模式

以前老的方式:

产品经理 / 领导 / 客户提出需求(提出文字需求)

ui做出设计图

前端工程师做html页面(用户能看到的页面)

后端工程师将html页面套成jsp页面(前后端强依赖,后端必须要等到前端的html页面做好才能套jsp。如果html发生变更,就很麻烦,开发效率低)

集成出现问题

前端返工

后端返工

二次集成

集成成功

交付

新的方式:

前后端约定接口 & 数据 & 参数

前后端并行开发(无强依赖,可前后端并行开发,如果需求变更,只要接口 & 参数不变,就不用两边都修改代码,开发效率高)

前后端集成

前端页面调整

????通过f12打开浏览器开发者工具进行抓包,返回数据是json格式的就是前后端分离,返回时html页面就是没有前后端分离。

微服务的概念:

将大模块切分成小模块。减少代码的耦合度,从而降低模块与模块之间的影响。原先是一个jar包里面包含所有模块,改一个模块就有可能影响其他模块,现在是将一个一个的模块都打成一个一个的jar包,模块与模块之间的交互通过接口,哪个模块出了问题,只需要修改那个模块的jar包,避免因为修改一个模块的代码导致其他模块出错。

接口自动化requests环境搭建

接口自动化核心库:requests

安装requests库的方法:

方法一:

命令行安装,打开cmd或者终端,输入以下命令:

接口自动化测试(Python+Requests+Unittest)

方法二:

在pycharm中安装,settings --> project --> project interpreter --> 点击“+”号 --> 输入request安装

接口自动化测试(Python+Requests+Unittest)
测试环境是否ok
响应超时timeout
json、url、text、encoding、status_code、encoding、cookies

json(javascript object notation, js 对象简谱) 是一种轻量级的数据交换格式。它基于 ecmascript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 json 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

json格式在python里面相当于字典类型。

json格式化:http://www.bejson.com/jsonviewernew/

url在线编码转换:https://www.w3cschool.cn/tools/index?name=urlencode_decode

get请求方式
post请求方式
put请求方式
delete请求方式
手动传入cookie的值(每次通过浏览器f12抓包,然后复制request header里面的cookie)
接口自动化测试(Python+Requests+Unittest)
cookie自动获取
批量获取cookie脚本
接口自动化测试(Python+Requests+Unittest)
unittest框架结构:
接口自动化测试(Python+Requests+Unittest)

代码地址:https://github.com/itcaituotuo/unittest_api

if _name_ == '__main__':

if __name__ == '__main__'的意思是:

当.py文件被直接运行时,if __name__ == '__main__'下的代码块将被运行;

当.py文件以模块形式被导入时,if __name__ == '__main__'下的代码块不被运行。

闭环断言(新增 --> 查询 --> 修改 --> 查询 --> 删除 -->查询)
接口自动化测试(Python+Requests+Unittest)

htmltestrunner.py百度网盘链接:

链接:https://pan.baidu.com/s/1oeh-p0d7saj2i7qevycavw

提取码:p20c

postman、jmeter、requests总结:

postman:接口功能测试

jmeter:接口性能测试

requests:接口自动化

三个的共同特点:都能完成接口功能测试。