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解析中国天气网的天气数据
Mar 21 Python
讲解Python中运算符使用时的优先级
May 14 Python
python实现的简单抽奖系统实例
May 22 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
Dec 21 Python
Python编程argparse入门浅析
Feb 07 Python
python实现堆和索引堆的代码示例
Mar 19 Python
实例讲解python中的协程
Oct 08 Python
django与小程序实现登录验证功能的示例代码
Feb 19 Python
Python2与Python3的区别点整理
Dec 12 Python
Python测试框架:pytest学习笔记
Oct 20 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
Dec 14 Python
详解PyTorch模型保存与加载
Apr 28 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 fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
2017/02/14 PHP
Javascript的一种模块模式
2008/03/22 Javascript
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
jquery中对表单的基本操作代码
2010/07/29 Javascript
javascript将数组插入到另一个数组中的代码
2013/01/10 Javascript
js采用concat和sort将N个数组拼接起来的方法
2016/01/21 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成"...")
2016/11/28 Javascript
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
2017/11/14 jQuery
Vue-router的使用和出现空白页,路由对象属性详解
2018/09/03 Javascript
JavaScript之Blob对象类型的具体使用方法
2019/11/29 Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
2020/03/06 Javascript
jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
2020/06/02 jQuery
javaScript实现一个队列的方法
2020/07/14 Javascript
微信小程序picker组件两列关联使用方式
2020/10/27 Javascript
vue 数据操作相关总结
2020/12/17 Vue.js
[02:44]完美大师赛主赛事淘汰赛第二日观众采访
2017/11/24 DOTA
[40:05]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python自动化工具日志查询分析脚本代码实现
2013/11/26 Python
Python 模拟登陆的两种实现方法
2017/08/10 Python
Python(Django)项目与Apache的管理交互的方法
2018/05/16 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
2018/05/26 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
2019/09/23 Python
如何基于Python批量下载音乐
2019/11/11 Python
Pytorch自己加载单通道图片用作数据集训练的实例
2020/01/18 Python
Python selenium模块实现定位过程解析
2020/07/09 Python
瑞典廉价机票预订网站:Seat24
2018/06/19 全球购物
迟到检讨书800字
2014/01/13 职场文书
借款担保书范文
2014/05/13 职场文书
物流专业求职信
2014/06/30 职场文书
交通事故协议书范本
2014/11/18 职场文书
家长会主持词开场白
2015/05/29 职场文书
遗愿清单观后感
2015/06/09 职场文书
超市店长竞聘书
2015/09/15 职场文书
《我们的民族小学》教学反思
2016/02/19 职场文书
QT连接MYSQL数据库的详细步骤
2021/07/07 MySQL