PyCharm中结合Requests与Pytest进行接口自动化测试实战

巷口听风
巷口听风
发布时间:2026-10-14 | 2人浏览过
原创

本文详解在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进行接口测试的教程介绍完毕。如需了解更多相关技术内容,建议查阅本站过往文章或继续浏览后续章节,感谢支持。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表