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中迭代器(iterator)用法实例分析
Apr 29 Python
Python2.x版本中cmp()方法的使用教程
May 14 Python
深入理解Python中装饰器的用法
Jun 28 Python
Python 正则表达式入门(初级篇)
Dec 07 Python
详解python实现线程安全的单例模式
Mar 05 Python
python topN 取最大的N个数或最小的N个数方法
Jun 04 Python
python中单例常用的几种实现方法总结
Oct 13 Python
python实现爬山算法的思路详解
Apr 09 Python
django获取from表单multiple-select的value和id的方法
Jul 19 Python
python Kmeans算法原理深入解析
Aug 23 Python
使用python 的matplotlib 画轨道实例
Jan 19 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
Jul 14 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运行环境配置与开发环境的配置(图文教程)
2013/06/04 PHP
ThinkPHP中U方法的使用浅析
2014/06/13 PHP
利用Fix Rss Feeds插件修复WordPress的Feed显示错误
2015/12/19 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
2019/04/16 PHP
offsetParent 算法分析
2010/04/05 Javascript
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
js获取键盘按键响应事件(兼容各浏览器)
2013/05/16 Javascript
node.js中的buffer.Buffer.isEncoding方法使用说明
2014/12/14 Javascript
Node.js操作mysql数据库增删改查
2016/03/30 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
2017/03/28 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
浅谈vue后台管理系统权限控制思考与实践
2018/12/19 Javascript
react实现移动端下拉菜单的示例代码
2020/01/16 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
解决vant title-active-color与title-inactive-color不生效问题
2020/11/03 Javascript
在Python的struct模块中进行数据格式转换的方法
2015/06/17 Python
利用Python校准本地时间的方法教程
2019/10/31 Python
TensorFlow 多元函数的极值实例
2020/02/10 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
python 给图像添加透明度(alpha通道)
2020/04/09 Python
keras中模型训练class_weight,sample_weight区别说明
2020/05/23 Python
基于Python3读写INI配置文件过程解析
2020/07/23 Python
adidas旗下高尔夫装备供应商:TaylorMade Golf(泰勒梅高尔夫)
2016/08/28 全球购物
英国山地公路自行车商店:Tweeks Cycles
2018/03/16 全球购物
Peter Millar官网:美国高档生活服饰品牌
2018/07/02 全球购物
《燕子》教学反思
2014/02/18 职场文书
中文教师求职信
2014/02/22 职场文书
有多年工作经验的自我评价
2014/03/02 职场文书
教研活动总结
2014/04/28 职场文书
授权委托书公证
2014/09/14 职场文书
政府四风问题整改措施
2014/10/04 职场文书
单位推荐信范文
2015/03/27 职场文书
物业管理交接协议书
2016/03/24 职场文书
JavaScript的function函数详细介绍
2021/11/20 Javascript
4种方法python批量修改替换列表中元素
2022/04/07 Python
Windows server 2012搭建FTP服务器
2022/04/29 Servers