代码实现

1.XlsEngine.py

# -*- coding:utf-8 -*-
__author__ = 'yanghaitao'
import xlrd
import xlwt class XlsEngine_rd():
"""
The XlsEngine is a demo class for excel openration
Just for some basic test or the using or the 3rd class in python
"""
def __init__(self,file):
# define class variable
self.xls_name = file
self.xlrd_object = None
self.xlwt_object = None
self.isopenfailed = True def xlrd_open(self):
try:
# xlrd.Book.encoding="utf-8"
self.xlrd_object = xlrd.open_workbook(self.xls_name)
self.isopenfailed = False
pass
except Exception,e:
self.isopenfailed = True
self.xlrd_object = None
print(e)
pass
finally:
'''
do nothing
'''
pass
return [self.isopenfailed,self.xlrd_object] def dump_sheet(self):
if self.isopenfailed == False:
'''
dump the sheet usging for getting the sheet
table = data.sheets()[0]
table = data.sheet_by_index(0)
table = data.sheet_by_name(u'Sheet1')
'''
for name in self.xlrd_object.sheet_names():
table = self.xlrd_object.sheet_by_name(name)
print("sheet %s rownums=%d colnums=%d"%(name,table.nrows,table.ncols))
else:
print("file %s is not open \n"%self.xls_name) def dump_cell(self,sheet_index,cell_row,cell_col):
'''
sheet_index
cell_row
cell_col
'''
try:
table=self.xlrd_object.sheet_by_index(0)
value=table.cell(cell_row,cell_col).value
return value
pass
except:
print('dump_cell,error') class XlsEngine_wt():
def __init__(self,file):
self.xls_name = file
self.xlwt_object = None
self.xlwt_sheet = None
self.isopenfailed = True def open(self):
try:
self.xlwt_object = xlwt.Workbook()
self.isopenfailed = False
except Exception,e:
print e def add_sheet(self,sheet_name):
'''
Create a sheet to the xls
'''
try:
self.xlwt_object = xlwt.Workbook()
self.xlwt_sheet = self.xlwt_object.add_sheet(sheet_name,cell_overwrite_ok=True)
self.xlwt_sheet.write(0,0,'WSDL')
self.xlwt_sheet.write(0,1,u'方法')
self.xlwt_sheet.write(0,2,'DATA')
self.xlwt_sheet.write(0,3,u'预期结果')
self.xlwt_sheet.write(0,4,u'执行结果')
except Exception,e:
print(e) def get_sheet(self,sheet_index):
try:
self.xlwt_object = xlwt.Workbook()
self.xlwt_sheet = self.xlwt_object.get_sheet(sheet_index)
except Exception,e:
print(e) def write(self,row,col,value):
'''
Write value to (row,col)
'''
try:
self.xlwt_sheet.write(row,col,value)
except Exception,e:
print(e) def save_xls(self):
'''
Save the change to xlsfile
'''
try:
self.xlwt_object.save(self.xls_name)
except Exception,e:
print(e) def set_fontColour(self,colour_index):
fnt=xlwt.Font()
fnt.colour_index=colour_index
fnt.bold=True
style=xlwt.XFStyle()
style.font=fnt
return style def write_result(self,row,list,index_list,as_value=True):
'''
row 行,list 结果列表,index_list 填写数据列表中的值的索引,wsdl 结果中显示调用接口地址,as_value 预期结果
'''
self.write(row,0,str(list[index_list][0]))
self.write(row,1,str(list[index_list][1]))
self.write(row,2,str(list[index_list][2]))
self.write(row,3,bool(list[index_list][3]))
if(bool(list[index_list][3])==as_value): #预期结果是否为True
self.xlwt_sheet.write(row,4,str(as_value)+'_Success',self.set_fontColour(3)) #colour_index=3,绿色,通过
else:
self.xlwt_sheet.write(row,4,str(as_value)+'_Fail',self.set_fontColour(2)) #colour_index=2,红色,失败 def write_resultRed(self,row,list,index_list,wsdl):
self.write(row,0,str(list[index_list][0])) #WSDL地址
self.write(row,1,str(list[index_list][1])) #方法名
self.write(row,2,str(list[index_list][2])) #传入参数(用例)
self.write(row,3,bool(list[index_list][3])) #预期结果
self.xlwt_sheet.write(row,4,'Unkonw_Fail',self.set_fontColour(2)) #colour_index=2,红色,失败(执行结果)

2.VIPSoap.py

#! /usr/bin/python
# coding:utf-8
from suds.client import Client class Service:
def __init__(self,wsdl):
self.client=Client(wsdl)
def Method(self,dict):
result=self.client.service.Method(dict)
return result

3.DataEngine.py

__author__ = 'yanghaitao'

from XlsEngine import XlsEngine_rd
import Logging
COUNT_ROWs=1 def data2List(file,sheet_index):
data = XlsEngine_rd(file)
data.xlrd_open()
sheet = data.xlrd_object.sheet_by_index(sheet_index)
rows = sheet.nrows
result_list=[]
for i in range(rows):
if(i != 0):
result_list.append(sheet.row_values(i))
return result_list def resultCheck(test_rep,xlw,list,xls_row):
global COUNT_ROWs
if(test_rep.Success == True):
xlw.write_result(COUNT_ROWs,list,xls_row,True)
COUNT_ROWs=COUNT_ROWs+1
elif(test_rep.Success == False):
Logging.writeLog(str(list[xls_row][1]),test_rep)
xlw.write_result(COUNT_ROWs,list,xls_row,False)
COUNT_ROWs=COUNT_ROWs+1
else:
Logging.writeLog(str(list[xls_row][1]),test_rep)
xlw.write_resultRed(COUNT_ROWs,list,xls_row)
COUNT_ROWs=COUNT_ROWs+1

4.Logging.py

#! /usr/bin/python
# coding:utf-8
import logging,time
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
logging.basicConfig(level=logging.INFO,
format='%(asctime)s %(filename)s[line:%(lineno)d] 【%(levelname)s】 %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
filename=r".\Log\Service"+time.strftime(r'%Y-%m-%d', time.localtime(time.time()))+".log",
filemode='a')
console = logging.StreamHandler()
logging.getLogger('suds.client').addHandler(console) def writeLog(methodname,result):
'''写日志'''
content = methodname + "\n"
for item in result:
content=content+'\t|'+str(item)
if result.Success==False:
logging.error(content) def writeException(msg):
'''写日志'''
logging.error("【Catch Exception】"+str(msg))

python 接口自动化测试(二)的更多相关文章

  1. python接口自动化测试二十七:密码MD5加密 ''' MD5加密 ''' # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待加密信息 str = 'asdas89799,.//plrmf' # 创建md5对象 hl = hashlib.md5() # Tips # 此处必须声明encode # 若写法为

    python接口自动化测试二十七:密码MD5加密   ''' MD5加密 '''# 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作import has ...

  2. python接口自动化测试二:常用操作

    url = '接口地址' r = requests.get(url)                      # 发送get请求 print(r.status_code)               ...

  3. python接口自动化测试二十三:文件上传

    # 以禅道为例: 一.创建一个类,类里面写一个登录方法: import requestsclass LoginZentao(): def __init__(self, s): # 初始化 self.s ...

  4. python接口自动化测试(二)-requests.get()

    环境搭建好后,接下来我们先来了解一下requests的一些简单使用,主要包括: requests常用请求方法使用,包括:get,post requests库中的Session.Cookie的使用 其它 ...

  5. python 接口自动化测试二(request.get)

    环境搭建好后,接下来我们先来了解一下requests的一些简单使用,主要包括: requests常用请求方法使用,包括:get,post requests库中的Session.Cookie的使用 其它 ...

  6. python接口自动化测试二十六:使用pymysql模块链接数据库

     #!/usr/bin/env python# -*- coding: utf-8 -*-# @Time    : 2018/5/28 18:51# @Author  : StalloneYang#  ...

  7. python接口自动化测试二十五:执行所有用例,并生成HTML测试报告

        import requestsimport unittest class TestQQ(unittest.TestCase):    '''测试QQ号接口'''      # 此注释将展示到测 ...

  8. python接口自动化测试二十九:yaml配置文件的写和读

    # 先安装ruamel.yaml模块 写入配置文件: import os# 先安装ruamel.yaml模块from ruamel import yaml # 将字典写入到yamldict = { ' ...

  9. python接口自动化测试二十八:连接SQL sever操作

    1.中文乱码问题: (1).文件头加上# -*- coding:utf-8 -*- 或者 #coding=utf8 (2).pymssql.connect连接串中charset是要跟你数据库的编码一样 ...

  10. python接口自动化测试二十七:加密与解密MD5、base64

    # MD5加密 # 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作 import hashlib def MD5(str): # 创建md5对象 hl ...

随机推荐

  1. python enhanced generator - coroutine

    本文主要介绍python中Enhanced generator即coroutine相关内容,包括基本语法.使用场景.注意事项,以及与其他语言协程实现的异同. enhanced generator 在上 ...

  2. C++ 头文件系列(map)

    简介 该头文件包含两个概念相似的容器----map.multimap. 而这两个容器反映的概念就是 映射. 这两个容器 相同 的属性有: 关联性 映射 动态增长 键(Key)唯一性 这两个不相同的属性 ...

  3. 微信小程序教程(第三篇)

    小程序的架构及实现机制,信道服务及会话管理 小程序架构及实现机制 小程序并不是 H5 应用,而是更偏向于传统的 CS 架构,它是基于数据驱动的模式,一切皆组件(视图组件).所以建议在开发小程序时不要以 ...

  4. react+redux构建淘票票首页

    react+redux构建淘票票首页 描述 在之前的项目中都是单纯的用react,并没有结合redux.对于中小项目仅仅使用react是可以的:但当项目变得更加复杂,仅仅使用react是远远不够的,我 ...

  5. iOS开发一些小技巧

    1.隐藏多余的tableView的cell分割线 self.tableView.tableFooterView= [[UIViewalloc]init]; 2.取消系统自带的返回字样 [[UIBarB ...

  6. 在Ubuntu12.0至14.04版本之间用Apache搭建网站运行环境

    为了顺利安装各种软件,先更新下系统. apt-get update 安装Apache服务 apt-get install apache2 -y 安装php apt-get install php5 - ...

  7. 一个普通底层.NET程序员关于职场瓶颈期的思考,辗转自我提升/跳槽/转行之间

    徒有工龄,没技术没学历没平台没家底,工作几年,无车无房无存款还前景不明. 时常有身边的亲友问怎么学开发怎么转互联网,说起IT行业都说工资高,动辄月薪上万动辄年薪几十万. 再看看自己,我可能是假的程序员 ...

  8. [python]什么是生成器

    看理论硬是看的抓狂,然后去百度贴吧看到了一句话,什么叫python生成器,简直秒懂

  9. bootstrap - btn 实例

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  10. 简述public private protected internal修饰符的访问权限

    public 关键字是类型和类型成员的访问修饰符.公共访问是允许的最高访问级别.对访问公共成员没有限制. protected 关键字是一个成员访问修饰符.受保护成员在它的类中可访问并且可由派生类访问. ...