Python实现接口自动化测试

    技术2022-07-17  74

    python实现接口自动化测试

    课程大纲介绍

    目标:基于Python结合requests库实现接口自动化测试

    大纲:

    1.Requests是什么?

    2.Get、Post、Put、Delete请求

    3.接口中Session、Cookie、Token应用

    4.基于Unittest框架继承接口自动化

    接口自动化测试介绍

    目标:

    1.理解接口自动化测试的概念

    2.了解接口自动化测试的实现方法

    1.接口自动化测试

    1.1概念

    接口测试:是对系统或组件之间的接口进行测试,主要是校验数据的交换、传递和控制管理过程,以及相互逻辑依赖关系。

    自动化测试:是把以人为驱动的测试行为转化为机器执行的一种过程。

    接口自动化测试:是让程序或工具代替人工自动的完成对接口进行测试的一种过程。

    1.2 实现方式

    使用接口测试工具来实现,比如:JMeter

    通过编码代码来实现,Python-requests

    1.3接口测试工具的不足

    1.测试数据不好控制(无法直接读取或存储json格式)

    2.不方便测试加密接口

    3.扩展能力不足(复杂业务逻辑)

    4.断言不够灵活(复杂的断言)

    Request库

    目标:

    1.掌握如何使用Requests库

    1. 什么是Requests库?

    1.1 介绍

    Requests库使用Python编写的,基于urllib,采用Apache2 License 开源协议的HTTP库,相比urllib库,Requests库更加方便,可以节约我们大量的工作,完全满足HTTP测试需求

    1.2 安装

    pip install requests

    2. 发送请求

    常见的HTTP请求方式:GET、POST、PUT、DELETE、HEAD、OPTIONS

    使用requests发送网络请求非常简单,只需要调用HTTP请求类型所对应的方法即可。

    2.1 GET请求

    import requests response = requests.get("http://www.baidu.com")

    请求方法的返回值response为Response对象,我们可以从这个对象中获取所有我们想要的响应信息。

    """ 目标:GET 请求无参演练 案例:http://www.biadu.com 请求: 1.请求方法:GET 响应: 1.响应对象.url #获取请求url 2.响应对象.status code #获取响应状态码 3.响应对象.text #以文本形式显示响应内容 """ import requests url = "http://www.baidu.com" r = requests.get(url) print("请求url:", r.url) print("状态码:", r.status_code) print("响应内容:", r.text) """ 目标:GET 请求带参演练 案例: 1.http://www.baidu.com?id=1001 2.http://www.baidu.com?id=1001,1002 3.http://www.baidu.com?id=1001&kw=北京 请求: 1.请求方法:GET 参数: params:字典或字符串 (推荐使用字典) 响应: 1.响应对象.url #获取请求url 2.响应对象.status code #获取响应状态码 3.响应对象.text #以文本形式显示响应内容 """ import requests url = "http://www.baidu.com" # 不推荐写法 静态 # url ="http://www.baidu.com?id=1001" # 案例1:定义字典 # params = {"id": 1001} # 案例2 # params ={"id":"1001,1002"} # 案例3 params = {"id": 1001, "kw": "北京"} r = requests.get(url, params=params) print("请求url:", r.url) print("状态码:", r.status_code) print("响应内容:", r.text)

    2.2 POST请求

    response = requests.post(url,data=None,json=None) """ :param url:请求的url :param data:(可选)要发送到请求体中的字典、元组、字节或文件对象 :param json:(可选)要发送到请求体重的JSON数据 :rtype: requests.Response """

    2.3 其他请求类型

    其他HTTP请求类型,比如:PUT、DELETE、HEAD以及OPTIONS。

    import requests response = requests.put("http://www.baidu.com",data={"key":"value"}) response = requests.delete("http://www.baidu.com") response = requests.head("http://www.baidu.com") response = requests.options("http://www.baidu.com")
    2.3.1 PUT方法

    作用:更新资源

    应用:

    ​ 导包 import requests

    ​ 调用put方法requests.put()

    ​ 示例:

    ​ r = requests.put(url,json.header)

    参数:

    ​ 参考post方法参数

    响应:

    ​ r.json()

    ​ r.status_code

    2.3.2 DELETE方法

    作用:删除资源

    应用:

    ​ 导包 import requests

    ​ 调用delete方法requests.delete()

    响应:

    ​ 响应状态码:204

    3. 响应内容

    response.status_code 状态码

    response.url 请求url

    response.encoding 查看响应头部字符编码

    response.headers 头信息

    response.cookies cookie信息

    response.text 文本形式的响应内容

    response.content 字节形式的响应内容

    response.json() json形式的响应内容

    """ 目标:响应对象的常用方法 1.encoding 1)获取请求编码 2)设置请求编码 2.headers 1)获取响应头信息 """ import requests url = "http://www.baidu.com" response = requests.get(url) # 查看请求编码 print(response.encoding) # 设置请求编码 response.encoding = "utf-8" print(response.text) # 查看信息头 print(response.headers) """ 1.cookies 1)获取响应cookies信息 2.content 1)以字节码形式获取响应信息(图片、视频、多媒体) """ import requests url = "http://www.baidu.com" url_logo = "https://www.baidu.com/s?wd=高考&sa=ire_dl_gh_logo&rsv_dl=igh_logo_pcs" response = requests.get(url) response_logo = requests.get(url_logo) # 获取cookie信息 print(response.cookies) # 获取content信息 print(response_logo.content) # 将图片写入当前目录 with open("./baidu.png", "wb") as f: f.write(response_logo.content)
    Processed: 0.008, SQL: 9