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的Django框架中的select_related函数对QuerySet 查询的优化
Apr 01 Python
详解Django框架中的视图级缓存
Jul 23 Python
Python随手笔记第一篇(2)之初识列表和元组
Jan 23 Python
利用python操作SQLite数据库及文件操作详解
Sep 22 Python
Python探索之创建二叉树
Oct 25 Python
浅谈Python2获取中文文件名的编码问题
Jan 09 Python
谈谈python中GUI的选择
Mar 01 Python
Python图像处理之识别图像中的文字(实例讲解)
May 10 Python
pyqt5让图片自适应QLabel大小上以及移除已显示的图片方法
Jun 21 Python
Python简易计算器制作方法代码详解
Oct 31 Python
wxPython+Matplotlib绘制折线图表
Nov 19 Python
python实现ip地址的包含关系判断
Feb 07 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和网页显示乱码解决方法集锦
2008/03/27 PHP
基于PHP magic_quotes_gpc的使用方法详解
2013/06/24 PHP
PHP实现图片裁剪、添加水印效果代码
2014/10/01 PHP
PHP实现bitmap位图排序与求交集的方法
2016/07/28 PHP
php array_pop 删除数组最后一个元素实例
2016/11/02 PHP
php高清晰度无损图片压缩功能的实现代码
2018/12/09 PHP
js输出阴历、阳历、年份、月份、周示例代码
2014/01/29 Javascript
动态加载js的方法汇总
2015/02/13 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
2015/10/23 Javascript
JavaScript添加随滚动条滚动窗体的方法
2016/02/23 Javascript
JavaScript_object基础入门(必看篇)
2016/06/13 Javascript
Javascript字符串常用方法详解
2016/07/21 Javascript
AngularJS入门教程之ng-class 指令用法
2016/08/01 Javascript
js面向对象编程总结
2017/02/16 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
2017/03/02 Javascript
Jquery把获取到的input值转换成json
2017/05/15 jQuery
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
微信小程序使用 vant Dialog组件的正确方式
2020/02/21 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
微信小程序抽奖组件的使用步骤
2021/01/11 Javascript
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
python实现简单的socket server实例
2015/04/29 Python
Centos7 Python3下安装scrapy的详细步骤
2018/03/15 Python
pytorch 模型可视化的例子
2019/08/17 Python
简单了解Python3 bytes和str类型的区别和联系
2019/12/19 Python
将pycharm配置为matlab或者spyder的用法说明
2020/06/08 Python
css3一款3D字体带阴影效果的实现步骤
2013/03/20 HTML / CSS
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
C++是不是类型安全的
2014/02/18 面试题
外国语学院毕业生自荐信
2013/10/28 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书
关于感恩老师的古诗句
2019/08/20 职场文书
五年级作文之劳动作文
2019/11/12 职场文书
【HBU】数据库第四周 单表查询
2021/04/05 SQL Server
浅谈Redis主从复制以及主从复制原理
2021/05/29 Redis
Java异常处理try catch的基本用法
2021/12/06 Java/Android