1. 用例设计:

  1. 执行用例代码:
  2.  
  3. # -*- coding: UTF-8 -*-
    import xlrd,logging,urllib,urllib2,json,sys
    from pylsy import pylsytable
  4.  
  5. #######################################################################################################
    #定义系统输出编码
    reload(sys)
    sys.setdefaultencoding('utf-8')
  6.  
  7. #########################################################################################################
    #定义日志输出
    logging.basicConfig(level=logging.DEBUG,
    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
    datefmt='%a, %d %b %Y %H:%M:%S',
    filename='myapp.log',
    filemode='w')
  8.  
  9. #################################################################################################
    #定义一个StreamHandler,将INFO级别或更高的日志信息打印到标准错误,并将其添加到当前的日志处理对象#
    console = logging.StreamHandler()
    console.setLevel(logging.INFO)
    formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
    console.setFormatter(formatter)
    logging.getLogger('').addHandler(console)
    #################################################################################################
  10.  
  11. ###################################################################################################
    #处理excel表格
    data = xlrd.open_workbook('C:\Users\xxxxx\Desktop\API.xls')#打开excel表格
    logging.info("打开%s excel表格成功"%data)
    table = data.sheet_by_name(u'Sheet2')#打开工作表sheet2
    logging.info("打开%s表成功"%table)
    nrows = table.nrows#统计行数
    logging.info("表中有%s行"%nrows)
    ncols = table.ncols#统计列数
    logging.info("表中有%s列"%ncols)
    logging.info("开始进行循环")
    name_1=[];url_1=[];params_1=[];type_1=[];Expected_result_1=[];Actual_result_1 =[];test_result_1=[];Remarks_1=[]#定义数组
    Success=0;fail=0 #初始化成功失败用例
    ##################################################################################################################
    for i in range(1,nrows):#遍历excel表格
    cell_A3 =table.row_values(i)
    #获取excel表格中的数据
    name = cell_A3[0]
    url = cell_A3[1]
    params=eval(cell_A3[2])
    type = cell_A3[3]
    error_code =cell_A3[4]
    Remarks =cell_A3[5]
    logging.info(url)
    #############################################################################################################################3
    params =urllib.urlencode(params) #参数化处理
    logging.info(params)
    url2 = urllib2.Request(url,params)
    print "***********开始执行请求************"
    response = urllib2.urlopen(url2)
    logging.info(response)
    apicontent = response.read()
    logging.info(apicontent)
    apicontent = json.loads(apicontent)
    #验证返回值
    if apicontent["error_code"]==int(error_code):
    name2="通过"
    print name+"测试通过"
    else:
    name2="失败"
    print name+"测试失败"
    name_1.append(name)
    url_1.append(url)
    params_1.append(params)
    type_1.append(type)
    Expected_result_1.append(int(error_code))
    Actual_result_1.append(apicontent["error_code"])
    test_result_1.append(name2)
    Remarks_1.append(Remarks)
    if name2=="通过":
    Success+=1
    elif name2=="失败":
    fail +=1
    else:
    print "测试结果异常"
  12.  
  13. ##############################################################################################################################
    #输出表格形式
    attributes =["urlname","url","params","type","Expected_result","Actual_result","test_result","Remarks"]
    table =pylsytable(attributes)
    name =name_1
    url =url_1
    params=params_1
    type=type_1
    Expected_result=Expected_result_1
    Actual_result =Actual_result_1
    test_result=test_result_1
    Remarks=Remarks_1
    table.add_data("urlname",name)
    table.add_data("url",url)
    table.add_data("params",params)
    table.add_data("type",type)
    table.add_data("Expected_result",Expected_result)
    table.add_data("Actual_result",Actual_result)
    table.add_data("test_result",test_result)
    table.add_data("Remarks",Remarks)
    table._create_table()
    print table
    print "成功的用例个数为:%s"%Success,"失败的用例个数为:%s"%fail
    print "***********执行测试成功************"
  14.  
  15. 执行结果:

Python接口测试简单框架的更多相关文章

  1. Python实现简单框架及三大框架对比

    手撸web框架 简单的请求响应实现 要实现最简单的web框架,首先要对网络熟悉,首先HTTP协议是应用层的协议,只要我们给数据加上HTTP格式的响应报头,我们的数据就能基于socket进行实现了 im ...

  2. python接口测试自动化框架-发送邮件,邮箱报错: 535 Error, authentication failed

    1.无意中把腾讯企业邮箱设置为安全登录,接口测试自动化发送邮件,不能被正常接收.错误信息为:535 Error, authentication failed. 原因:认证安全登录后,原来新的邮箱代码传 ...

  3. 小试牛刀——python接口测试小框架

    用例设计: 执行用例代码: # -*- coding: UTF-8 -*-import xlrd,logging,urllib,urllib2,json,sysfrom pylsy import py ...

  4. Python接口测试实战4(下) - 框架完善:用例基类,用例标签,重新运行上次失败用例

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  5. Python接口测试框架实战与自动化进阶☝☝☝

    Python接口测试框架实战与自动化进阶☝☝☝  一.fiddler在工作中的运用  1.如何抓接口 抓紧手机端接口 ①.在电脑终端输入:ipconfig ,找到电脑ip ②.打开手机,连接WiFi, ...

  6. 基于python的接口测试框架设计(三)接口测试的框架

    基于python的接口测试框架设计(三)接口测试的框架 其实我这里用到的是unittest单元测试框架,,这个框架好就好在比较清楚,,setup terdown都可以处理一些初始化及完成后的工作 主要 ...

  7. Python接口测试实战4(上) - 接口测试框架实战

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  8. Python接口测试实战3(下)- unittest测试框架

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  9. python之unittest框架实现接口测试实例

    python之unittest框架实现接口测试实例 接口测试的方法有很多种,具体到工具有postman,jmeter,fiddler等,但是工具的局限性是测试数据的组织较差,接口的返回工具的判断有限, ...

随机推荐

  1. java子类继承关系

    1.java的类按照继承关系的树形结构所有的类其根节点都是object类,一个类有两种重要的成员,一是变量 .二是方法.子类继承不能继承父类中被声明为private的变量和方法. public cla ...

  2. 雅礼 noip2018 模拟赛day3 T2

    典型的状压思想 设0表示黑球,1表示白球,用一串01序列代表剩下的球的状态,记f[i]表示在i状态下取球的最大期望 那么可以利用记忆化搜索更新,每一层枚举可能拿走的球然后向下搜索,同时记忆化即可 在状 ...

  3. Dinner

    问题 : Dinner 时间限制: 1 Sec  内存限制: 32 MB 题目描述 Little A is one member of ACM team. He had just won the go ...

  4. Jmeter测试demo

    复制代码,保存为.jmx文件 需要安装插件: JMeterPlugins-ExtrasLibs E:\软件\apache-jmeter-3.0\lib\ext <?xml version=&qu ...

  5. Jenkins删除或替换All view

    一.Jenkins删除All view “系统管理”→“系统设置”页面,更改“Default view”的下拉选项.(前提你已经新建了新的view) 二.My Views删除All view “用户” ...

  6. lisp : set 与setq 函数

    在Lisp中,如果我们希望对一个变量赋值,可以使用set函数,用法如下: (set ‘my-value "my string") 上面的代码是对变量my-value进行赋值,值是& ...

  7. python文件的分类

    # 0.获取所有的文件名称列表import os import shutilos.chdir("files")file_list = os.listdir("./&quo ...

  8. snmp对超过16T的磁盘大小识别不对的解决办法

    https://blog.csdn.net/redleaf0000/article/details/38303299

  9. [转] meta标签的作用及整理

    meta的标签的使用是我在前端学习中曾经困惑过一段时间的问题.一方面不是很了解meta标签的用途,另一方面是对于meta标签里的属性和值不是懂,也不知道从哪里冒出来的,所以这篇文章专门整理下meta标 ...

  10. [转] js在浏览器端对二进制流进行AES加密和解密

    开始解密 简单了解一下所用的的AES加密算法,我们用的是AES的CFB加密方式,服务端会提供给我一个key和iv的二进制字节串.密文也是二进制字节串. 我用的加密/解密插件: crypto-js 一般 ...