接口自动化测试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使用文档