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 ...
随机推荐
- linux系统下find删除目录下除一文件外的所有文件
/data/目录下有a.txt b.txt c.txt d.txt删除/data/目录下所有文件,保留b.txt两种方法:1.[root@xuegod62 ~]# find /data/ -type ...
- 服务器部署项目出现问题:Unsupported major.minor version 52.0
问题描述: 编写一个web 前置服务,使用ant编译项目,将项目部署到服务器上,启动时报此错误:Unsupported major.minor version 52.0 网上给出错误原因是服务器安装的 ...
- jQuery + CSS3实现环形进度条
实现原理 原理非常的简单,在这个方案中,最主要使用了CSS3的transform中的rotate和CSS3的clip两个属性.用他们来实现半圆和旋转效果. 半环的实现 先来看其结构. HTML < ...
- SOCKET是什么
一.问题的引入--socket的引入是为了解决不同计算机间进程间通信的问题 1.socket与进程的关系 1).socket与进程间的关系:socket 用来让一个进程和其他的进程互通信息(IPC ...
- InfluxDB读写性能测试
今天进行了InfluxDB和MySQL的对比测试,这里记录下结果,也方便我以后查阅. 操作系统: CentOS6.5_x64InfluxDB版本 : v1.1.0MySQL版本:v5.1.73CPU ...
- ABP框架 - 嵌入资源
文档目录 本节内容: 简介 创建嵌入文件 xproj/project.json 格式 csproj 格式 添加到嵌入式资源管理器 使用嵌入式视图 使用嵌入式资源 ASP.NET Core 配置 忽略文 ...
- 【android开发笔记】为Button的背景图片添加边框式样式效果
现在做的项目遇到一个问题,设计给过来的图片只有一种状态,但是实现的需求是要求有两个状态,另一种选状态为图片背景加边框.如图: 刚开使用使用ImageView ,ImageViewButton 效果不是 ...
- JavaScript中国象棋程序(1) - 界面设计
"JavaScript中国象棋程序" 这一系列教程将带你从头使用JavaScript编写一个中国象棋程序.这是教程的第1节. 这一系列共有9个部分: 0.JavaScript中国象 ...
- C语言位运算符:与、或、异或、取反、左移和右移
语言位运算符:与.或.异或.取反.左移和右移 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符 ...
- Noip 2014酱油记+简要题解
好吧,day2T1把d默认为1也是醉了,现在只能期待数据弱然后怒卡一等线吧QAQ Day0 第一次下午出发啊真是不错,才2小时左右就到了233,在车上把sao和fate补掉就到了= = 然后到宾馆之后 ...