pycharm中使用request和Pytest进行接口测试的方法


Posted in Python onJuly 31, 2020

安装request库
以火车的站站查询为例的post和get方法的接口测试
使用pytest测试接口

1、requests的请求机制

1、安装request库

pycharm中使用request和Pytest进行接口测试的方法
pycharm中使用request和Pytest进行接口测试的方法

2、以火车的站站查询为例的post和get请求方法

pycharm中使用request和Pytest进行接口测试的方法

2.1get请求

两种传参方式

1、_url = “网址+参数” = “网址?key1=value1&key2=value2”

response1 = request.get(url = _url)

2、字典拼接

_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())

pycharm中使用request和Pytest进行接口测试的方法

2.2post请求
拼接参数方式传参

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)

常见的请求方法

请求方法 含义
requests.get() 获取html的主要方法
requests.head() 获取html头部信息的主要方法
requests.post() 向html网页提交post请求的方法
requests.put() 向html网页提交put请求的方法
requests.patch() 向html提交局部修改的请求
requests.delete() 向html提交删除请求

2、pytest测试接口

1、安装pytest
pip install pytest

2、使用pytest测试接口
在pytest框架中,有如下约束:
文件名要以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", 
        ...
      }, 
      {...}, 
      {...}, 
      ...
    ]
  }
}

pycharm中使用request和Pytest进行接口测试的方法

4.3取出数据
出发站(station)和到达站(endstation)在result中的list下,怎么取到呢?----[“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 运行

pycharm中使用request和Pytest进行接口测试的方法

4.5 查看结果

pycharm中使用request和Pytest进行接口测试的方法

如果该路径下有多个以test开头或者结尾的文件,则会一起检测两个文件中的接口

pycharm中使用request和Pytest进行接口测试的方法

如果出现ERROR则在文件中找错误原因

pycharm中使用request和Pytest进行接口测试的方法

总结

到此这篇关于pycharm中使用request和Pytest进行接口测试的文章就介绍到这了,更多相关pycharm使用request和Pytest接口测试内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python3.3使用tkinter开发猜数字游戏示例
Mar 14 Python
Python信息抽取之乱码解决办法
Jun 29 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
Aug 31 Python
Python小工具之消耗系统指定大小内存的方法
Dec 03 Python
python3 cvs将数据读取为字典的方法
Dec 22 Python
Python实现时间序列可视化的方法
Aug 06 Python
Python3 把一个列表按指定数目分成多个列表的方式
Dec 25 Python
计算Python Numpy向量之间的欧氏距离实例
May 22 Python
Python通过kerberos安全认证操作kafka方式
Jun 06 Python
Python如何爬取51cto数据并存入MySQL
Aug 25 Python
Python标准库pathlib操作目录和文件
Nov 20 Python
Python中的嵌套循环详情
Mar 23 Python
django创建css文件夹的具体方法
Jul 31 #Python
Selenium之模拟登录铁路12306的示例代码
Jul 31 #Python
python的flask框架难学吗
Jul 31 #Python
使用PyCharm安装pytest及requests的问题
Jul 31 #Python
django和flask哪个值得研究学习
Jul 31 #Python
Windows下PyCharm配置Anaconda环境(超详细教程)
Jul 31 #Python
Python如何输出百分比
Jul 31 #Python
You might like
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
zf框架的校验器InArray使用示例
2014/03/13 PHP
php实现头像上传预览功能
2017/04/27 PHP
extjs 学习笔记 四 带分页的grid
2009/10/20 Javascript
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
jQuery getJSON()+.ashx 实现分页(改进版)
2013/03/28 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
js跨域请求的5中解决方式
2015/07/02 Javascript
JavaScript数组的一些奇葩行为
2016/01/25 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
AngularJS中一般函数参数传递用法分析
2016/11/22 Javascript
JS使用插件cryptojs进行加密解密数据实例
2017/05/11 Javascript
微信小程序实现轮播图效果
2017/09/07 Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
2017/12/15 Javascript
mongoose更新对象的两种方法示例比较
2017/12/19 Javascript
js保留两位小数方法总结
2018/01/31 Javascript
微信小程序自定义prompt组件步骤详解
2018/06/12 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
2018/12/13 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
2021/01/07 Javascript
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
利用python实现短信和电话提醒功能的例子
2019/08/08 Python
python装饰器使用实例详解
2019/12/14 Python
Pytorch的mean和std调查实例
2020/01/02 Python
如何使用Python调整图像大小
2020/09/26 Python
python基于exchange函数发送邮件过程详解
2020/11/06 Python
htnl5利用svg页面高斯模糊的方法
2018/07/20 HTML / CSS
英国医生在线预约:Top Doctors
2019/10/30 全球购物
企业节能减排实施方案
2014/03/19 职场文书
大学生英语演讲稿
2014/04/24 职场文书
人力资源管理专业自荐书
2014/07/07 职场文书
学校党员个人问题整改措施思想汇报
2014/10/08 职场文书
诚信高考倡议书
2019/06/24 职场文书
golang 语言中错误处理机制
2021/08/30 Golang
解决 Redis 秒杀超卖场景的高并发
2022/04/12 Redis
Java 多线程并发FutureTask
2022/06/28 Java/Android