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 20 Python
Python实现七彩蟒蛇绘制实例代码
Jan 16 Python
Python3.4实现远程控制电脑开关机
Feb 22 Python
纯用NumPy实现神经网络的示例代码
Oct 24 Python
python 扩展print打印文件路径和当前时间信息的实例代码
Oct 11 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
Dec 04 Python
TensorFlow实现从txt文件读取数据
Feb 05 Python
Python输出指定字符串的方法
Feb 06 Python
解决python虚拟环境切换无效的问题
Apr 30 Python
详解python如何引用包package
Jun 07 Python
Python字符串查找基本操作代码案例
Oct 27 Python
Python下载商品数据并连接数据库且保存数据
Mar 31 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编写注册后Email激活验证的实例代码
2013/03/11 PHP
php中最简单的字符串匹配算法
2014/12/16 PHP
新浪微博OAuth认证和储存的主要过程详解
2015/03/27 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
2015/04/17 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
同一页面多个商品倒计时JS 基于面向对象的javascript
2012/02/16 Javascript
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
js切换光标示例代码
2013/10/10 Javascript
jquery制作LED 时钟特效
2015/02/01 Javascript
jQuery检查事件是否触发的方法
2015/06/26 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
2016/07/12 Javascript
第一次接触神奇的Bootstrap表单
2016/07/27 Javascript
jQuery实现的放大镜效果示例
2016/09/13 Javascript
浅谈js函数的多种定义方法与区别
2016/11/29 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
Angular通过指令动态添加组件问题
2018/07/09 Javascript
js canvas画布实现高斯模糊效果
2018/11/27 Javascript
微信公众平台获取access_token的方法步骤
2019/03/29 Javascript
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
Vue v-model组件封装(类似弹窗组件)
2020/01/08 Javascript
小程序瀑布流组件实现翻页与图片懒加载
2020/05/19 Javascript
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
Python模拟百度登录实例详解
2016/01/20 Python
使用Python的PIL模块来进行图片对比
2016/02/18 Python
实例解析Python的Twisted框架中Deferred对象的用法
2016/05/25 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
pandas实现将dataframe满足某一条件的值选出
2019/06/12 Python
什么是Python变量作用域
2020/06/03 Python
怎样声明子类
2013/07/02 面试题
技术副厂长岗位职责
2013/12/26 职场文书
经贸专业毕业生求职信范文
2014/05/01 职场文书
教师作风整改措施思想汇报
2014/10/12 职场文书
2015年团队工作总结范文
2015/05/04 职场文书
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
2021/10/16 Python