PyCharm中结合Requests与Pytest进行接口自动化测试实战
本文详解在PyCharm环境中使用Python的requests库与Pytest框架进行接口测试的完整流程。内容涵盖requests库的安装、GET与POST请求的参数传递方式(URL拼接与字典传参)、响应数据的提取与格式化,以及利用Pytest规范编写自动化测试用例。通过火车查询接口实例,展示如何验证状态码、解析JSON数据并断言业务逻辑,帮助开发者快速掌握接口自动化测试的核心技能。
PyCharm中结合Requests与Pytest进行接口自动化测试实战
本文主要介绍如何在PyCharm开发环境中,利用Python的requests库发起HTTP请求,并结合pytest框架进行接口自动化测试。文章将以火车站站查询接口为例,详细演示POST和GET两种请求方法的具体应用及测试用例的编写。
requests库的基本请求机制
一、requests库的基本请求机制
安装requests库
1. 安装requests库


以火车站站查询为例,演示POST与GET请求方法
二、以火车站站查询为例,演示POST与GET请求方法

GET请求的实现方式
2.1 GET请求的实现方式
在GET请求中,主要有两种常见的参数传递方式。
第一种方式是将参数直接拼接在URL字符串中,格式为“网址?key1=value1&key2=value2”。
response1 = request.get(url = _url)
第二种方式是通过字典结构传递参数,这种方式代码可读性更强。
_params = {
“key1” : “value1”,
“key2” : “value2”,
}
response2 = requests.get(url=“网址”, params = _params)
import requests
response = requests.get(url="https://api.binstd.com/train/station2s?start=北京&end=西安&ishigh=0&appkey=d737aad9a0d9dc97")
print(response.text) #字符串格式
print(response.json()) #json,前提需要确保返回内容为json格式,否则报错
#字典方式拼接参数
print("-------------字典方式拼接参数---------------")
params = {
"start" : "北京",
"end" : "西安",
"ishigh" : 0 ,
"appkey" : "d737aad9a0d9dc97"
}
response1 = requests.get(url="https://api.binstd.com/train/station2s", params = params)
print(response1.text)
print(response1.json())

POST请求的实现方式
2.2 POST请求的实现方式 POST请求通常通过字典拼接参数的方式进行传参,将数据放置在请求体中发送。
import requests
#字典方式拼接参数
data = {
"start" : "北京",
"end" : "西安",
"ishigh" : 0 ,
"appkey" : "d737aad9a0d9dc97"
}
response1 = requests.post(url="https://api.binstd.com/train/station2s", data = data)
print(response1.text)
print(response1.json())
#获取响应状态码
print(response1.status_code)
#获取原始模式
print(response1.raw)
常见的HTTP请求方法
常见的HTTP请求方法包括GET、POST、PUT、DELETE等,requests库均提供了对应的支持。
| 请求方法 | 含义 |
|---|---|
| requests.get() | 获取html的主要方法 |
| requests.head() | 获取html头部信息的主要方法 |
| requests.post() | 向html网页提交post请求的方法 |
| requests.put() | 向html网页提交put请求的方法 |
| requests.patch() | 向html提交局部修改的请求 |
| requests.delete() | 向html提交删除请求 |
使用pytest框架进行接口测试
三、使用pytest框架进行接口测试
安装pytest库
1. 安装pytest库 执行命令:pip install pytest
使用pytest执行接口测试
2. 使用pytest执行接口测试 在pytest框架中,测试文件的命名需遵循特定约束:文件名必须以test_开头或以_test结尾(如test_*.py或*_test.py),且文件内应包含一个或多个以test_开头的测试函数。当执行pytest命令时,框架会自动扫描当前目录及其子目录,查找符合上述命名规范的测试函数并执行。
接口响应数据的获取与处理
4.1 获取接口响应数据
import requests
def request_ticket():
#返回接口响应结果
url = "https://api.binstd.com/train/ticket"
payload = {
"start": "北京",
"end": "西安",
"date": "2019-10-1",
"appkey": "d737aad9a0d9dc97"
}
#response = requests.get(url = _url, parms = payload)
response = requests.post(url = url, data = payload)
print(response.text)
return response
request_ticket()
对响应结果进行格式化展示
4.2 对响应结果进行格式化展示 由于原始响应数据可能过长,此处使用省略号替代部分信息,以便清晰查看关键结构。
{
"status": 0,
"msg": "ok",
"result": {
"start": "北京",
"end": "西安",
"date": "2020-06-10",
"list": [
{
"trainno": "G667",
"type": "G",
"typename": "高铁",
"station": "北京西",
"endstation": "西安北",
"departuretime": "11:19",
...
"departstationcode": "BXP",
"terminalstationcode": "EAY",
"startdate": "20200610",
...
},
{
"trainno": "G659",
"type": "G",
"typename": "高铁",
"station": "北京西",
"endstation": "西安北",
"departuretime": "11:53",
...
"departstationcode": "BXP",
"terminalstationcode": "EAY",
"startdate": "20200610",
...
},
{...},
{...},
...
]
}
}

提取关键数据
4.3 提取关键数据 出发站(station)和到达站(endstation)的数据位于响应JSON的result.list路径下。提取方法为:request_ticket().json()["result"]["list"]。
def test_departur_station():
"""
始发站测试,测试接口返回的所有车次信息,他们的出发站,和到达站都符合参数约定
:return:
"""
#从响应中获取测试列表
trainSli = request_ticket().json()["result"]["list"] #单个的车次信息
#trainSli是取出来的list列表
for trainInfo in trainSli:
assert "北京" in trainInfo["station"] #判断‘北京'是否是列表中‘station'的值
assert "西安" in trainInfo["endstation"] #判断到达站是不是‘西安'
#调用函数
test_departur_station()
'''def test_train_date():
"""
发车日期测试,接口返回的所有车次信息,发车日期,都符合参数约定
:return:
"""
#从响应中获取测试列表
trainSli = request_ticket().json()["result"]["list"] #单个的车次信息
for trainInfo in trainSli:
assert "20200610" in trainInfo["startdate"]
test_train_date()'''
运行测试脚本
4.4 运行测试脚本

查看测试结果
4.5 查看测试结果

多文件测试用例执行
如果指定路径下存在多个以test开头或结尾的测试文件,pytest会自动检测并执行所有文件中的接口测试用例。

错误排查与处理
如果测试过程中出现ERROR,需要在对应的测试文件中查找具体的错误原因并进行排查。

总结
总结
至此,关于在PyCharm中使用requests和Pytest进行接口测试的教程介绍完毕。如需了解更多相关技术内容,建议查阅本站过往文章或继续浏览后续章节,感谢支持。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









