python如何使用unittest测试接口


Posted in Python onApril 04, 2018

本文实例为大家分享了python使用unittest 测试接口的具体代码,供大家参考,具体内容如下

1.首先使用 python 的requests 对接口进行测试

# TestInface.py 
import requests,json 
url = visit.get_test_url() 
news_url = url+'news.info' 
headers = baseToken.basetoken_datas()['headers'] 
def new_data(data): 
   
  r = requests.post(news_url,data=data,headers=headers) 
  cnn = json.loads(r.text) 
  return cnn

2.使用unittest调用接口,且对接口测试的结果进行统计

# TestCase.py 
# -*- coding:utf-8 -*- 
import unittest 
import TestInface 
 
 
# 对执行的case结果进行统计 
# --------------------------------------------------------------------------------------------------------------------- 
text = "" 
num_success = 0 
num_fail = 0 
 
 
# 测试通过 
def decide_success(joggle): 
  global num_success 
  num_success += 1 
  print_out(joggle + ":接口测试通过\n") 
  return num_success 
 
 
# 测试不通过 
def decide_fail(txt, joggle): 
  global num_fail 
  num_fail += 1 
  print_out(joggle + ":接口测试未通过 \n错误信息: " + txt + "\n") 
  return num_fail 
 
 
# 邮件内容写入 & 客户端输出 
def print_out(message): 
  global text 
  text += "\n" + message 
  return text 
  
# 返回值判断 
def decide_result(result, code, joggle): 
  if result['code'] == code: 
    decide_success(joggle) 
    return "pass" 
  else: 
    txt = u"期望返回值:" + str(code) + u" 实际返回值:" + str(result) + '\n' + result['message'] 
    decide_fail(txt, joggle) 
    return "fail" 
 
 
def decide_Count(): 
  data = { 
    'num_success': num_success, 
    'num_fail': num_fail, 
    'text': text 
  } 
  return data 
# -------------------------------------------------------------------------------------------------------------------- 
# 定义 unittest 
class MyTestCase(unittest.TestCase):  
 
  # 初始化工作 
  def setUp(self): 
    pass  
 
  # 退出清理工作 
  def tearDown(self): 
    pass 
  def test_Case1(self): 
  id = 16 
    data = {'id':id} 
    a = TestInface.new_data(data) 
    decide_result(a,0,'test_Case1')

3.使用suite对case进行管理

# TestSuite.py 
# -*- coding:utf-8 -*- 
import unittest 
import TestCase 
  
def test_InterFace(): 
  
  # 构造测试集 
  suite = unittest.TestSuite() 
  suite.addTest(TestCase("test_Case1")) # unittest中的测试用例 
 
 
  runner = unittest.TextTestRunner() 
  runner.run(suite) 
  # 对测试集进行测试需要返回值 
  # return suite 
 
if __name__ == '__main__': 
  
  # unittest.main(defaultTest='test_InterFace') 
  # 执行测试 
  runner = unittest.TextTestRunner() 
  runner.run(test_InterFace())

4.对接口的数据进行统计

# TestCensus.py 
# -*- coding:utf-8 -*- 
import time 
import TestSuite 
import send_email 
import TestCase 
 
class Test_Calss(): 
 
  def census(self): 
    text = '' 
    # 初始化测试起始时间 
    start_time = time.time() 
    # 调用suite测试集 
    TestSuite.test_InterFace() 
    # 结束执行时间计算 
    end_time = time.time() 
 
    result = TestCase.decide_Count() 
    # 接口测试统计说明 
    total_use_case = u"执行用例总数:" + str(result['num_success'] + result['num_fail']) + \ 
             u"\t通过数:" + str(result['num_success']) + \ 
             u"\t不通过数:" + str(result['num_fail']) 
    total_time = u"\t总共耗时:" + str(round((end_time - start_time), 3)) + u'秒' 
    text = result['text'] + total_use_case + total_time 
    print (text) 
 
    # 发生测试报告邮件 
    send_email.email_file(text) 
 
if __name__ == '__main__': 
  Test_Calss().census()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现端口转发器的方法
Mar 13 Python
Python 异常处理的实例详解
Sep 11 Python
用Eclipse写python程序
Feb 10 Python
Python iter()函数用法实例分析
Mar 17 Python
对Python 数组的切片操作详解
Jul 02 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
Jan 29 Python
Python中PyQt5/PySide2的按钮控件使用实例
Aug 17 Python
python多进程(加入进程池)操作常见案例
Oct 21 Python
详解pandas apply 并行处理的几种方法
Feb 24 Python
Python机器学习应用之工业蒸汽数据分析篇详解
Jan 18 Python
PyTorch device与cuda.device用法
Apr 03 Python
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
Apr 11 Python
Python统计单词出现的次数
Apr 04 #Python
高效使用Python字典的清单
Apr 04 #Python
Python的numpy库中将矩阵转换为列表等函数的方法
Apr 04 #Python
python 列表,数组,矩阵两两转换tolist()的实例
Apr 04 #Python
使用Python设计一个代码统计工具
Apr 04 #Python
用 Python 连接 MySQL 的几种方式详解
Apr 04 #Python
Python基于辗转相除法求解最大公约数的方法示例
Apr 04 #Python
You might like
微信扫描二维码登录网站代码示例
2013/12/30 PHP
Laravel4中的Validator验证扩展用法详解
2016/07/26 PHP
教你在header中隐藏php的版本信息
2016/08/10 PHP
如何利用预加载优化Laravel Model查询详解
2017/08/11 PHP
javascript iframe中打开文件,并检测iframe存在否
2008/12/28 Javascript
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
javaScript array(数组)使用字符串作为数组下标的方法
2013/11/19 Javascript
绑定回车enter事件代码
2014/05/18 Javascript
jquery 判断selection range 是否在容器中的简单实例
2016/08/02 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
2016/11/01 Javascript
基于JS组件实现拖动滑块验证功能(代码分享)
2016/11/18 Javascript
Vue数据驱动模拟实现2
2017/01/11 Javascript
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
Vue ElementUI之Form表单验证遇到的问题
2017/08/21 Javascript
js实现会跳动的日历效果(完整实例)
2017/10/18 Javascript
实例解析ES6 Proxy使用场景介绍
2018/01/08 Javascript
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
2018/05/22 Javascript
js实现指定时间倒计时效果
2019/08/26 Javascript
微信小程序利用for循环解决内容变更问题
2020/03/05 Javascript
解决ant-design-vue中menu菜单无法默认展开的问题
2020/10/31 Javascript
Python程序中设置HTTP代理
2016/11/06 Python
python如何实现内容写在图片上
2018/03/23 Python
Python实现的简单排列组合算法示例
2018/07/04 Python
python迭代dict的key和value的方法
2018/07/06 Python
Python字符串内置函数功能与用法总结
2019/04/16 Python
python实现二级登陆菜单及安装过程
2019/06/21 Python
python KNN算法实现鸢尾花数据集分类
2019/10/24 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
2020/01/02 Python
opencv python如何实现图像二值化
2020/02/03 Python
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
南京某软件公司的.net面试题
2015/11/30 面试题
财务专业大学生职业生涯规划范文
2013/12/30 职场文书
科技之星事迹材料
2014/06/02 职场文书
党员个人整改措施
2014/10/24 职场文书
修改MySQL的默认密码的四种小方法
2021/05/26 MySQL
再谈python_tkinter弹出对话框创建
2022/03/20 Python