接口自动化测试pytest框架

一、接口自动化

接口自动化是通过对接口进行测试和模拟,以确保软件系统内部的各个组件能够正确地相互通信和交换数据

接口测试专注于测试系统内部的逻辑和数据传输,而不是像UI测试那样关注用户的操作和交互

需要安装必要的依赖库,如requests用于发送HTTP请求,pytest用于测试框架。

二、通过命令安装requests库

包管理工具pip

pip list查看当前项目有哪些已经安装好的包

终端输入命令pip install requests==2.31.0(版本号0

输出<>表示打印出来是一个对象

requests 库是⼀个非常流行的HTTP客⼾端库,用于发送HTTP请求。 requests.get 方法用于发送⼀个HTTP get 请求到指定的URL requests.get 方法返回⼀个 Response 对象,这个对象包含了服务器返回的所有信息。

r.status_code 响应状态码

r.content 字节方式的响应体,会自动解码gzip和deflate压缩

r.headers 以字典对象存储服务器响应头,若键不存在则返回None

r.json() Requests中内置的JSON解析方法,将响应体解析为JSON格式

r.url 获取实际请求的URL

r.encoding 编码格式,根据响应头部的字符编码确定

r.cookies 获取服务器设置的cookies

r.raw 返回原始响应体,不进行任何处理

r.text 字符串方式的响应体,会自动根据响应头部的字符编码进行解码

r.raise_for_status() 失败请求(非200响应)抛出异常

打印特定的信息比如:响应是html格式打印r.text

get() 、 post() 底层都是调⽤ request() ⽅法,request()请求对以上请求方法进行封装

复制代码
req_r1 = requests.request(method="get", url="https://www.baidu.com")
req_r2 = requests.request(method="post", url="https://www.baidu.com")

2) 方法传参

url 请求的接口

headers ⼀个字典,包含要发送的HTTP头。

cookies ⼀个字典、列表或者 RequestsCookieJar 对象,包含要发送的cookies。

files ⼀个字典,包含要上传的文件。

data ⼀个字典、列表或者字节串,包含要发送的请求体数据。

json ⼀个字典,将被转换为JSON格式并发送。

params ⼀个字典、列表或者字节串,将作为查询字符串附加到URL上

上传参数格式

params 用于在URL中传递查询参数(Query Parameters),通常用于 GET 请求,但也可以用于其他类型的请求。

json 用于在请求体(Body)中传递 JSON 格式的数据,通常用于 POST 或 PUT 请求。

data 用于在请求体(Body)中传递表单数据,通常用于 POST 或 PUT 请求

若参数上传格式选择为 json 格式, Content-Type 会自动被设置为 application/json

复制代码
#登录
url = "http://152.136.169.194:8080/user/login"

# 定义要发送的数据
data = {
    "username":"czw",
    "password": "123456"
}
r = requests.post(url=url, data=data)
print(r.json())

请求头添加用户登录凭证才登陆成功

复制代码
#查询音乐
url = "http://152.136.169.194:8080/music/findloveMusic"
# 定义查询参数
paramer = {
    "musicname":"%E8%B5%B5"
}

cookie={
    "JSESSIONID":"D91FBB71C20EC0B75819B1A8EDECA48F"
}

r = requests.get(url=url, params=paramer,cookies=cookie)
print(r.json())

三、自动化框架pytest

安装

pip install pytest==(版本号)

查看 python版本 python版本与pytest版本对应

通过pytest运行所有测试用例

pytest可以自动识别到测试用例,不需要在手动编写main函数并调用测试用例

注意测试用例文件/方法/类名命名有规则

  1. 文件名必须以 test_ 开头或者 _test 结尾 2. 测试类必须以 Test 开头,并且不能有 init ⽅法。 3. 测试方法必须以 test 开头

当满足以上要求后,可通过命令行参数 pytest命令 直接运⾏符合条件的⽤例:

2)pytest命令参数

pytest 在当前目录及其子目录中搜索并运行测试。

pytest -v 增加输出的详细程度。

pytest -s 显示测试中的 print 语句。

pytest test_module.py 运行指定的测试模块。

pytest test_dir/ 运行指定目录下的所有测试。

pytest -h命令 查看pytest使用文档