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 相关文章推荐
Python 性能优化技巧总结
Nov 01 Python
轻松掌握python设计模式之策略模式
Nov 18 Python
图解Python变量与赋值
Apr 03 Python
Python使用ConfigParser模块操作配置文件的方法
Jun 29 Python
Python基于plotly模块实现的画图操作示例
Jan 23 Python
python中从for循环延申到推导式的具体使用
Nov 29 Python
TensorFlow tensor的拼接实例
Jan 19 Python
Python API 操作Hadoop hdfs详解
Jun 06 Python
Python计算信息熵实例
Jun 18 Python
基于python获取本地时间并转换时间戳和日期格式
Oct 27 Python
Python制作动态字符画的源码
Aug 04 Python
Pygame如何使用精灵和碰撞检测
Nov 17 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
mysql总结之explain
2012/02/27 PHP
PHP 的比较运算与逻辑运算详解
2016/05/12 PHP
PHP弱类型的安全问题详细总结
2016/09/25 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
JavaScript控制listbox列表框的项目上下移动的方法
2015/03/18 Javascript
jquery插件jSignature实现手动签名
2015/05/04 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
微信和qq时间格式模板实例详解
2016/10/21 Javascript
JavaScript ES6中const、let与var的对比详解
2017/06/18 Javascript
VueJs使用Amaze ui调整列表和内容页面
2017/11/30 Javascript
通过封装scroll.js 获取滚动条的值
2018/07/13 Javascript
NodeJS读取分析Nginx错误日志的方法
2019/05/14 NodeJs
layui上传图片到服务器的非项目目录下的方法
2019/09/26 Javascript
详解利用eventemitter2实现Vue组件通信
2019/11/04 Javascript
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
[02:28]DOTA2英雄基础教程 狼人
2013/12/23 DOTA
python中的内置函数getattr()介绍及示例
2014/07/20 Python
python进阶教程之函数参数的多种传递方法
2014/08/30 Python
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
2018/01/24 Python
python实现自动获取IP并发送到邮箱
2018/12/26 Python
python可视化实现KNN算法
2019/10/16 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
Python3实现飞机大战游戏
2020/04/24 Python
香港最大的洋酒零售连锁店:屈臣氏酒窖(Watson’s Wine)
2018/12/10 全球购物
SmartBuyGlasses荷兰:购买太阳镜和眼镜
2020/03/16 全球购物
super关键字的用法
2012/04/10 面试题
请介绍一下WSDL的文档结构
2013/03/17 面试题
周年庆促销方案
2014/03/15 职场文书
司法助理专业自荐书
2014/06/13 职场文书
不听老师话的万能检讨书
2014/10/04 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书
关于远足的感想
2015/08/10 职场文书
详解JavaScript的计时器和按钮效果设置
2022/02/18 Javascript