代码实现

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. S2SH框架整合(注解)Struts2+Spring+Hibernate+MySql

    整合简介 Struts2+Spring4+hibernate4整合,Maven管理jar包,Eclipse工具.注解方式 架构截图   1.Spring整合Hibernate 1.1.创建Hibern ...

  2. KB奇遇记(6):搞笑的ERP项目团队

    早在我们来之前,KB公司这边就已经组建了ERP项目组了,当时IT就只有一个人,属网管出身.而关键用户分两种类型:专职关键用户和兼职关键用户.专职关键用户组织结构上已经调动到信息部,常驻在项目组里工作, ...

  3. ubuntu 笔记一

    注:ubuntu14.04 64位 1.刚安装的ubuntu无法在终端使用su 原因:root没有默认密码,需要手动设定. 解决方法:以具有sudo权限的用户登录 给root用户设置密码:打开一个te ...

  4. ROM、RAM、DRAM、SRAM和FLASH的区别

    ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写.ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是 ...

  5. 使用HeartBeat实现高可用HA的配置过程详解

    一.写在前面 HA即(high available)高可用,又被叫做双机热备,用于关键性业务.简单理解就是,有2台机器 A 和 B,正常是 A 提供服务,B 待命闲置,当 A 宕机或服务宕掉,会切换至 ...

  6. j2se 总结

    j2se在学习第二遍的时候,感觉还是比较亲切的.

  7. 《无所不能的JavaScript编程系列:arguments 参数对象》

    前言:无所不能的JavaScript JavaScript起源于Netscape公司的LiveScript语言,这是一种基于对象和事件驱动的客户端脚本语言,最初的设计是为了检验HTML表单输入的正确性 ...

  8. (二) 从Angular1到Angular2需要的预备知识

    1. TypeScript语法与ES6新特性 写惯了jQ的话突然从ES5跳到ES6,又是个变形的ES6(TypeScript),学习成本确实不低.不过笔者也是从ng1直接上手ng2,对与很多新特性的积 ...

  9. JavaScript中国象棋程序(4) - 极大极小搜索算法

    "JavaScript中国象棋程序" 这一系列教程将带你从头使用JavaScript编写一个中国象棋程序.这是教程的第4节. 这一系列共有9个部分: 0.JavaScript中国象 ...

  10. gridcontrol显示行号,总行,打印,导出Excel,设置标头及内容居中方法

    1.一般为了表格显示数据更直观,经常会显示行号以及总数.让gridcontrol显示行号,首先你需要设置一下显示行号的宽度,也就是IndicatorWith.默认值为-1,可根据实际数值需要设置宽度, ...