#encoding: utf-8
import urllib2,xlrd,xlwt,time
from xlutils.copy import copy
from lxml import etree
def Time():
tim=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
return tim
class Test(object):
def __init__(self,url,uri):
self.url=url
self.uri=uri
def openurl(self):
try:
response=urllib2.urlopen(self.url)
self.html=response.read()
return ("pass",self.html)
except urllib2.URLError,e:
ex=e.code+e.reason
return ("except",ex)
#测试用例-添加方法
def case(self,EC_result,html):
self.EC_result =EC_result
root = etree.fromstring(html)
Message=root.xpath('/ats/message')[0].text
valuelist=[]
if Message == "Successful.":
__VALUE=root.xpath(self.uri)
for val in __VALUE:
value=val.text
valuelist.append(value)return "PASS"
else:
return "FALSE"
else:
return Message
#使用len进行对比
def caselen(self,EC_result,html):
self.EC_result =EC_result
root = etree.fromstring(self.html)
Message=root.xpath('/ats/message')[0].text
if Message == "Successful.":
__VALUE=root.xpath(self.uri)
if len(__VALUE) > EC_result :
return "PASS"
else:
return "FALSE"
else:
return Message
#获取元素方法
def caseele(self,EC_result,html):
self.EC_result =EC_result
root = etree.fromstring(self.html)
Message=root.xpath('/ats/message')[0].text
valuelist=[]
if Message == "Successful.":
__VALUE=root.xpath(self.uri)
for val in __VALUE:
valuelist.append(val)
strvalue=";".join(valuelist)
if EC_result in strvalue:
return "PASS"
else:
return "FALSE"
else:
return Message
oldex = xlrd.open_workbook(r'ClasTtestcase.xls')
oldsh = oldex.sheet_by_index(0)
nrows = oldsh.nrows
newex = copy(oldex)
newsh = newex.get_sheet(0)
newsh.write(1,6,Time())
#dict={"traffic/item":caseA_traffic_round,
for i in xrange(1,nrows):
#输出LOG
print "#%d."%i,oldsh.cell(i,0).value.strip(),u"验证"
print "url:",oldsh.cell(i,1).value.strip()
#实例化Testcase
TestCase = Test(oldsh.cell(i,1).value.strip(),oldsh.cell(i,4).value.strip())
#实际结果
EC_result=oldsh.cell(i,2).value
#判断赋值
Path=oldsh.cell(i,5).value
#异常
status,html=TestCase.openurl()
#条件判断
if status == 'pass':
if 'len' in Path:
newsh.write(i,3,TestCase.caselen(EC_result,html))
elif '@' in Path:
newsh.write(i,3,TestCase.caseele(EC_result,html))
else:
newsh.write(i,3,TestCase.case(EC_result,html))
else:
newsh.write(i,3,html)
newex.save(r'ClasTtestcase.xls')
print u'测试完成'
excel 表格样式,请大家自行对照