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中使用urllib2防止302跳转的代码例子
Jul 07 Python
python基础教程之Hello World!
Aug 29 Python
PyQt5每天必学之单行文本框
Apr 19 Python
Python运维自动化之nginx配置文件对比操作示例
Aug 29 Python
Python3爬虫之自动查询天气并实现语音播报
Feb 21 Python
numpy中的ndarray方法和属性详解
May 27 Python
python之yield和Generator深入解析
Sep 18 Python
python和php学习哪个更有发展
Jun 17 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
Jul 05 Python
Flask处理Web表单的实现方法
Jan 31 Python
matplotlib源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)
Feb 22 Python
python中pd.cut()与pd.qcut()的对比及示例
Jun 16 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类Class的概念
2012/06/14 PHP
PHP根据IP地址获取所在城市具体实现
2013/11/27 PHP
win7计划任务定时执行PHP脚本设置图解
2014/05/09 PHP
php 使用mpdf实现指定字段配置字体样式的方法
2019/07/29 PHP
『jQuery』.html(),.text()和.val()的概述及使用
2013/04/22 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
jquery获取元素值的方法(常见的表单元素)
2013/11/15 Javascript
使用js如何实现全选与全不选
2013/12/30 Javascript
使用js获取图片原始尺寸
2014/12/03 Javascript
js实现图片漂浮效果的方法
2015/03/02 Javascript
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
2017/05/13 jQuery
js 原生判断内容区域是否滚动到底部的实例代码
2017/11/15 Javascript
p5.js入门教程之平滑过渡(Easing)
2018/03/16 Javascript
Vue下路由History模式打包后页面空白的解决方法
2018/06/29 Javascript
vue初始化动画加载的实例
2018/09/01 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
js实现炫酷光感效果
2020/09/05 Javascript
nodejs中使用worker_threads来创建新的线程的方法
2021/01/22 NodeJs
[02:10]探秘浦东源深体育馆 DOTA2 Supermajor不见不散
2018/05/17 DOTA
python 快速排序代码
2009/11/23 Python
Python BeautifulSoup中文乱码问题的2种解决方法
2014/04/22 Python
Python兔子毒药问题实例分析
2015/03/05 Python
python列表使用实现名字管理系统
2019/01/30 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
2019/04/29 Python
Python封装成可带参数的EXE安装包实例
2019/08/24 Python
python cv2在验证码识别中应用实例解析
2019/12/25 Python
Melijoe美国官网:法国奢侈童装购物网站
2017/04/19 全球购物
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
就业协议书
2014/09/12 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
2014年大学班长工作总结
2014/11/14 职场文书
商务司机岗位职责
2015/04/10 职场文书
2015年社区重阳节活动总结
2015/07/30 职场文书
golang 实用库gotable的具体使用
2021/07/01 Golang
golang实现一个简单的websocket聊天室功能
2021/10/05 Golang