代码实现

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. 比AutoMapper轻量快速简洁的实体映射库YeaJur.Mapper

    之前在做实体深拷贝时一直使用的AutoMapper,但是总是觉得其写法比繁琐,效率也不算很高,自己写了一个轻量级的实体拷贝库YeaJur.Mapper,和AutoMapper 测试对比如下 PK项 Y ...

  2. 最近总当机,IT帮网站用了1天时间成功搬家

    Posted on 2017年1月22日 最近一两周,IT帮的会员.BA学员和AM学员时不时反馈网站打不开.敏捷个人APP登录不了,有时候又可以但是很慢,还有的时候电信能访问而联通网络访问不了. 这个 ...

  3. JTable 的使用

    JTable是Swing编程中的一种控件. 一.创建表格控件的各种方式:1) 调用无参构造函数. JTable table = new JTable(); 2) 以表头和表数据创建表格. Object ...

  4. canvas动态小球重叠效果

    前面的话 在javascript运动系列中,详细介绍了各种运动,其中就包括碰壁运动.但是,如果用canvas去实现,却是另一种思路.本文将详细介绍canvas动态小球重叠效果 效果展示 静态小球 首先 ...

  5. JS闭包深入理解(理解篇)

    看书的时候很是不明白为啥变量老是五,经过认真思考的出一下理解: function box() {   var arr = [];   for (var i = 0; i < 5; i++) {  ...

  6. 简单谈谈JavaScript中的this

    是夜,想着考量下小黄毛近期的JavaScript进阶如何了,鉴于近期一直在接触Vue 2.0,索性就围绕this编写了个代码片段, 给其一个测量,毕竟写js的程序员都知道,JavaScript的函数调 ...

  7. 征服恐惧!用 Vim 写 iOS App

    我们都知道 Vim 和 Emacs 都是文本编辑器中的上古神器,你也许用 ctags,cscopes 配合 Vim 完成过大型 C 或者 C++ 的开发,你也许配合过其他插件,完成过 JavaScri ...

  8. Noip 2014酱油记+简要题解

    好吧,day2T1把d默认为1也是醉了,现在只能期待数据弱然后怒卡一等线吧QAQ Day0 第一次下午出发啊真是不错,才2小时左右就到了233,在车上把sao和fate补掉就到了= = 然后到宾馆之后 ...

  9. BZOJ 2142: 礼物

    模非素数下的排列组合,简直凶残 调着调着就过了= = 都不知道怎么过的= = 直接上链接http://hi.baidu.com/aekdycoin/blog/item/147620832b567eb4 ...

  10. 从HTML5规范弄清i、em、b、strong元素的区别

    为了语义化,HTML5增加了不少新标签.其中i.em和b.strong这两组标签是最容易弄混的,不好好去探究一下,还真说不清.这个也是前端面试中经常会问的问题.今天从源头上,也就是从HTML5的文档( ...