python 接口自动化测试(二)
代码实现
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 接口自动化测试(二)的更多相关文章
- 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 ...
- python接口自动化测试二:常用操作
url = '接口地址' r = requests.get(url) # 发送get请求 print(r.status_code) ...
- python接口自动化测试二十三:文件上传
# 以禅道为例: 一.创建一个类,类里面写一个登录方法: import requestsclass LoginZentao(): def __init__(self, s): # 初始化 self.s ...
- python接口自动化测试(二)-requests.get()
环境搭建好后,接下来我们先来了解一下requests的一些简单使用,主要包括: requests常用请求方法使用,包括:get,post requests库中的Session.Cookie的使用 其它 ...
- python 接口自动化测试二(request.get)
环境搭建好后,接下来我们先来了解一下requests的一些简单使用,主要包括: requests常用请求方法使用,包括:get,post requests库中的Session.Cookie的使用 其它 ...
- python接口自动化测试二十六:使用pymysql模块链接数据库
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2018/5/28 18:51# @Author : StalloneYang# ...
- python接口自动化测试二十五:执行所有用例,并生成HTML测试报告
import requestsimport unittest class TestQQ(unittest.TestCase): '''测试QQ号接口''' # 此注释将展示到测 ...
- python接口自动化测试二十九:yaml配置文件的写和读
# 先安装ruamel.yaml模块 写入配置文件: import os# 先安装ruamel.yaml模块from ruamel import yaml # 将字典写入到yamldict = { ' ...
- python接口自动化测试二十八:连接SQL sever操作
1.中文乱码问题: (1).文件头加上# -*- coding:utf-8 -*- 或者 #coding=utf8 (2).pymssql.connect连接串中charset是要跟你数据库的编码一样 ...
- python接口自动化测试二十七:加密与解密MD5、base64
# MD5加密 # 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作 import hashlib def MD5(str): # 创建md5对象 hl ...
随机推荐
- Bootstrap入门(二十八)JS插件5:工具提醒
Bootstrap入门(二十八)JS插件5:工具提醒 工具提示在使用过程中比较常见,但是实现起来有些麻烦,而bootstrap则很好地解决了这个问题. 我们来写一个简单的实例 先引入CSS文件和JS文 ...
- 如何使用DockerHub官方的mysql镜像
Mysql是一个广泛使用的开源关系型数据库. 如何获取Mysql Docker镜像? docker pull mysql:5.7 如何使用这个Docker镜像? 1.启动一个Mysql Server容 ...
- Windows Azure Virtual Machine (34) 保护Azure虚拟机
<Windows Azure Platform 系列文章目录> 请注意:我们在Azure上创建的虚拟机,都是可以通过公网IP地址来访问的.(直接通过虚拟机的IP地址:PIP,或者通过负载均 ...
- [css]《css揭秘》学习笔记(一)
一.background-clip属性 <html> <head> <meta charset="utf-8"> <title>背景 ...
- display的none与block(判断登录界面的账号密码是否为空)
判断登录界面的账号密码是否为空的时候又不想用alert显示就需要用display来隐藏alert啦(在设置时切忌要将隐藏的内容写在账号和密码的div中,否则会根据屏幕的分辨率不同而有所变化,这是本人教 ...
- 基于机器学习的web异常检测
基于机器学习的web异常检测 Web防火墙是信息安全的第一道防线.随着网络技术的快速更新,新的黑客技术也层出不穷,为传统规则防火墙带来了挑战.传统web入侵检测技术通过维护规则集对入侵访问进行拦截.一 ...
- 11G内存设置一例
11G的内存设置参数有memory_target.memory_max_target.sga_target.pga_aggregate_target等. 一个特别繁忙的数据库,前期内存设置较低,物理内 ...
- DOM解析,取得XML文件里面的信息
1 创建解析器工厂 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 2 解析器工厂对象创建解析器对象 Do ...
- Android之RecyclerView轻松实现下拉刷新和加载更多
今天研究了下RecyclerView的滑动事件,特别是下拉刷新和加载更多事件,在现在几乎所有的APP显示数据列表时都用到了.自定义RecyclerView下拉刷新和加载更多听上去很复杂,实际上并不难, ...
- JVM垃圾收集(GC)算法
判断对象是否已死 1. 引用计数算法 给对象中添加一个引用计数器,每当一个地方引用它时,计数器值就加1:当引用失败时,计数器值就减1:任何时刻计数器为0的对象就是不能再被使用的. 主流的Java虚拟机 ...