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正则表达式抓取成语网站
Nov 20 Python
详细解读Python的web.py框架下的application.py模块
May 02 Python
Python抓取百度查询结果的方法
Jul 08 Python
Python多线程下载文件的方法
Jul 10 Python
Python实现简单拆分PDF文件的方法
Jul 30 Python
Python内置模块ConfigParser实现配置读写功能的方法
Feb 12 Python
python3+selenium自动化测试框架详解
Mar 17 Python
python pickle存储、读取大数据量列表、字典数据的方法
Jul 07 Python
Python中zip()函数的简单用法举例
Sep 02 Python
Linux下通过python获取本机ip方法示例
Sep 06 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
Oct 15 Python
详解MindSpore自定义模型损失函数
Jun 30 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中全局变量global的使用演示代码
2011/05/18 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
2017/03/02 PHP
Mac下php 5升级到php 7的步骤详解
2017/04/26 PHP
PHP面向对象程序设计之构造方法和析构方法详解
2019/06/13 PHP
用jscript实现新建和保存一个word文档
2007/06/15 Javascript
InnerHtml和InnerText的区别分析
2009/03/13 Javascript
改善用户体验的五款jQuery插件分享
2011/05/22 Javascript
关于jQuery对象数据缓存Cache原理以及jQuery.data详解
2013/04/07 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
PHP结合jQuery实现的评论顶、踩功能
2015/07/22 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
2015/11/05 Javascript
jQuery toggle 代替方法
2016/03/22 Javascript
jquery实现左右无缝轮播图
2020/07/31 Javascript
js 将图片连接转换成base64格式的简单实例
2016/08/10 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
2016/10/13 Javascript
Textarea输入字数限制实例(兼容iOS&安卓)
2017/07/06 Javascript
JS运动改变单物体透明度的方法分析
2018/01/23 Javascript
js传递数组参数到后台controller的方法
2018/03/29 Javascript
vue和webpack安装命令详解
2018/06/15 Javascript
使用layui定义一个模块并使用的例子
2019/09/14 Javascript
Angular单元测试之事件触发的实现
2020/01/20 Javascript
python实现忽略大小写对字符串列表排序的方法
2014/09/25 Python
用Python编写一个简单的Lisp解释器的教程
2015/04/03 Python
Python 确定多项式拟合/回归的阶数实例
2018/12/29 Python
Python在OpenCV里实现极坐标变换功能
2019/09/02 Python
Python并发concurrent.futures和asyncio实例
2020/05/04 Python
使用python将微信image下.dat文件解密为.png的方法
2020/11/30 Python
美国羊皮公司:Overland
2018/01/15 全球购物
在购买印度民族服饰:Soch
2020/09/15 全球购物
集团公司人力资源部岗位职责
2014/01/03 职场文书
党课培训主持词
2014/04/01 职场文书
2015年世界环境日活动总结
2015/02/11 职场文书
现场施工员岗位职责
2015/04/11 职场文书
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript