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 02 Python
python 调用win32pai 操作cmd的方法
May 28 Python
pandas 两列时间相减换算为秒的方法
Apr 20 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
Oct 28 Python
python+ffmpeg批量去视频开头的方法
Jan 09 Python
Python multiprocessing多进程原理与应用示例
Feb 28 Python
Python简单I/O操作示例
Mar 18 Python
基于Python数据分析之pandas统计分析
Mar 03 Python
PyInstaller运行原理及常用操作详解
Jun 13 Python
Python如何合并多个字典或映射
Jul 24 Python
python实现测试工具(一)——命令行发送get请求
Oct 19 Python
python中_del_还原数据的方法
Dec 09 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下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
php中__toString()方法用法示例
2016/12/07 PHP
PHP+JS实现的实时搜索提示功能
2018/03/13 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
javascript实现的网页局布刷新效果
2008/12/01 Javascript
Javascript isArray 数组类型检测函数
2009/10/08 Javascript
JQuery 选择和过滤方法代码总结
2010/11/19 Javascript
最佳JS代码编写的14条技巧
2011/01/09 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
jQuery.each使用详解
2015/07/07 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
2015/08/24 Javascript
如何实现JavaScript动态加载CSS和JS文件
2020/12/28 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
2015/10/26 Javascript
nodejs async异步常用函数总结(推荐)
2017/11/17 NodeJs
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
2019/05/22 Javascript
sharp.js安装过程中遇到的问题总结
2020/04/02 Javascript
vue登录页实现使用cookie记住7天密码功能的方法
2021/02/18 Vue.js
python设计模式大全
2016/06/27 Python
手机使用python操作图片文件(pydroid3)过程详解
2019/09/25 Python
Python namedtuple命名元组实现过程解析
2020/01/08 Python
python判断正负数方式
2020/06/03 Python
python实现银行账户系统
2021/02/22 Python
HTML5的结构和语义(3):语义性的块级元素
2008/10/17 HTML / CSS
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
KIKO美国官网:意大利的平价彩妆品牌
2017/05/16 全球购物
通用C#笔试题附答案
2016/11/26 面试题
酒店副总经理岗位职责范本
2014/02/04 职场文书
培训科主任岗位职责
2014/08/08 职场文书
体检通知范文
2015/04/21 职场文书
责任书范本大全
2015/05/11 职场文书
离职信范本
2015/06/23 职场文书
幼儿园老师新年寄语
2015/08/17 职场文书
win11如何查看端口是否被占用? Win11查看端口是否占用的技巧
2022/04/05 数码科技