Python + Requests + Unittest接口自动化测试实例分析


Posted in Python onDecember 12, 2019

本文实例讲述了Python + Requests + Unittest接口自动化测试。分享给大家供大家参考,具体如下:

1. 介绍下python的requests模块

Python Requests快速入门 :http://cn.python-requests.org/zh_CN/latest/

想必会Python基础的小伙伴们一看就懂了

2. Requests接口自动化测试:

2.1 如何利用这么利器进行接口测试,请看小demo:

# -*- coding:utf-8 -*
import requests
def test():
  url = "http://120.24.239.**:9080/user/app/get_sys_time.do" #测试的接口url
  headers = {'content-type': 'application/json'}
  r = requests.get(url=url, headers=headers)
  return r.json()
if __name__ == "__main__":
  test()

在进行接口测试的过程中对传入的参数进行边界值测试、错误推导测试、等价类测试等测试方法进行测试。有时安全性考虑,会在请求接口url上添加session的东东,这个时候不怕,直接把登录接口返回码中的session提取出来,放在post请求的header里,例如:

# -*- coding:utf-8 -*
import requests
def test():
  url = "http://120.24.239.**:9080/user/app/login.do" #登录的接口
  headers = {'content-type': 'application/json'}
  r = requests.get(url=url, headers=headers)
  return r.json()
def test_have_session(url):
  cookie = "JSESSIONID=" + "".join(test().get("JSESSIONID")) #利用登录接口获取JSESSIONID
  headers = {'content-type': 'application/xml', 'Cookie': cookie}
  r = requests.post(url, headers=headers)
  return r.json()
if __name__ == "__main__":
  url = ""  #测试的接口url
  test_have_session(url)

2.2 做完所有接口的接口测试后,就要编写接口自动化了,不可能开发每次去修改接口你又得手动的去测试一遍,特别是产品上线了,需要到所有的接口进行一遍测试,这个时候有了接口自动化就方便多了,接下来看下一个缩减版的接口自动化测试demo:

# -*- coding:utf-8 -*
# 测试报告邮件内容
text = ""
# 用例统计
num_success = 0
num_fail = 0
# 测试通过
def test_success():
  global num_success
  num_success += 1
  print_out(u"测试结果:通过\n")
# 测试不通过
def test_fail(txt):
  global num_fail
  num_fail += 1
  print_out(u"测试结果:不通过 \n错误信息: " + txt + "\n")
# 邮件内容写入 & 客户端输出
def print_out(message):
  global text
  text += "\n" + message
  print message
# 返回值判断
def test_result(result, code):
  if result.get("status") == code:
    test_success()
    return "pass"
  else:
    txt = u"期望返回值:" + str(code) + u" 实际返回值:" + str(result.get("status"))
    test_fail(txt)
    return "fail"

Python + Requests + Unittest接口自动化测试实例分析

def test_interface():
  # 初始化测试起始时间
  start_time = datetime.datetime.now()
  # 构造测试集
  suite = unittest.TestSuite()
  suite.addTest(MyTestSuite("test_login"))  # 登陆
  suite.addTest(MyTestSuite("test_employees")) # 员工管理
  suite.addTest(MyTestSuite("test_department")) # 部门管理
  suite.addTest(MyTestSuite("test_work_sys")) # 工作日历管理
  suite.addTest(MyTestSuite("test_holiday")) # 节假日管理
  suite.addTest(MyTestSuite("test_queryAp")) # 智能终端管理
  suite.addTest(MyTestSuite("test_edit_info")) # 企业信息管理 & 个人信息
  suite.addTest(MyTestSuite("test_data")) # 每日数据报表 & 月度数据报表
  # 执行测试
  runner = unittest.TextTestRunner()
  runner.run(suite)
  # 测试执行时间计算
  end_time = datetime.datetime.now()
  total_use_case = u"执行用例总数:" + str(num_success + num_fail) + \
           u"\t通过数:" + str(num_success) + \
           u"\t不通过数:" + str(num_fail)
  total_time = u"\t总共耗时:" + str((end_time-start_time).seconds) + u"秒"
  print_out(total_use_case + total_time)
  # 发生邮件测试报告
  Send_email.send_email(text)

例子中缺失很多判断按具体项目测试的接口去进行判断,整体的框架是这样子的,在接口很多的项目中,可以分文件进行编写,方便后期接口测试用例的修改,在我现在公司的产品中总共有69个接口,将这69个接口我进行了分类去管理,如果需要将接口测试脚本放服务器去跑,需要添加try….except,将出现的错误信息报出来,利用smtplib发送错误信息到自己的邮箱就好了。

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python脚本实现代码行数统计代码分享
Mar 10 Python
python实现计算倒数的方法
Jul 11 Python
python3获取当前文件的上一级目录实例
Apr 26 Python
Python 使用PIL numpy 实现拼接图片的示例
May 08 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
Jun 14 Python
python按照多个条件排序的方法
Feb 08 Python
python基础梳理(一)(推荐)
Apr 06 Python
Python远程视频监控程序的实例代码
May 05 Python
基于python实现删除指定文件类型
Jul 21 Python
基于Python实现全自动下载抖音视频
Nov 06 Python
基于Python爬取搜狐证券股票过程解析
Nov 18 Python
浅谈Selenium+Webdriver 常用的元素定位方式
Jan 13 Python
python opencv图片编码为h264文件的实例
Dec 12 #Python
Python pygame绘制文字制作滚动文字过程解析
Dec 12 #Python
详解python 中in 的 用法
Dec 12 #Python
python调用c++返回带成员指针的类指针实例
Dec 12 #Python
在Python中实现函数重载的示例代码
Dec 12 #Python
django框架F&Q 聚合与分组操作示例
Dec 12 #Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
Dec 12 #Python
You might like
收藏的一个php小偷的核心程序
2007/04/09 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
2016/03/23 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
PHP开发中csrf攻击的简单演示和防范
2017/05/07 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
2017/11/06 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
推荐:极酷右键菜单
2006/11/29 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
Jquery实现地铁线路指示灯提示牌效果的方法
2015/03/02 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
2015/09/14 Javascript
javascript原型继承工作原理和实例详解
2016/04/07 Javascript
原生 JS Ajax,GET和POST 请求实例代码
2016/06/08 Javascript
浅析JavaScript中的array数组类型系统
2016/07/18 Javascript
AngularJs导出数据到Excel的示例代码
2017/08/11 Javascript
javascript实现简易聊天室
2019/07/12 Javascript
JS遍历树层级关系实现原理解析
2020/08/31 Javascript
[02:48]DOTA2超级联赛专访海涛:你们的选择没有错
2013/06/07 DOTA
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
利用numpy实现一、二维数组的拼接简单代码示例
2017/12/15 Python
Pandas分组与排序的实现
2019/07/23 Python
Python爬取数据并实现可视化代码解析
2020/08/12 Python
Python ConfigParser模块的使用示例
2020/10/12 Python
PHP中如何创建和修改数组
2012/05/02 面试题
业务员岗位职责
2013/11/16 职场文书
销售演讲稿范文
2014/01/08 职场文书
《诚实与信任》教学反思
2014/04/10 职场文书
电视节目策划方案
2014/05/16 职场文书
2014年医院十一国庆节活动方案
2014/09/15 职场文书
上班迟到检讨书
2014/09/15 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
房屋出售授权委托书
2014/10/12 职场文书
2016年猴年新春致辞
2015/08/01 职场文书
如何用threejs实现实时多边形折射
2021/05/07 Javascript
Python OpenCV超详细讲解读取图像视频和网络摄像头
2022/04/02 Python