HTTP请求类
import requests
import unittest#1:利用6-12号写的excel数据读取类以及6月9号写的HTTP单元测试类, # 完成老黄历的单元测试,且输出测试报告。 # (注意是要从Excel里面获取测试 数据哦~并且把测试结果写回到Exc
def __init__(self,url,param):
self.url=url
self.param=param
def get_py(self,method):
try:
if method.upper()=="GET":
resp=requests.get(self.url,self.param)
elif method.upper()=="POST":
resp=requests.post(self.url,self.param)
else:
print("")
return resp.json()
except AssertionError as e:
print("%s"%e)
if __name__=="__main__":
http=Http_request("http://v.juhe.cn/laohuangli/d",{'date':'2018-09-11','key':''})
print(http.get_py("get"))
Excel读写测试用例类
class Get_Data:
def __init__(self,filepath,sheetname):
self.filepath=filepath
self.sheetname=sheetname
def read_data(self):
loads=load_workbook(self.filepath)
sheet=loads[self.sheetname]
list_2=[]
for row in range(2,sheet.max_row+1):
list_1=[]
for column in range(1,7):
list_1.append(sheet.cell(row,column).value)
list_2.append(list_1)
return list_2
def write_data(self,rows,act,res):
loads=load_workbook(self.filepath)
sheet=loads[self.sheetname]
sheet.cell(rows,7).value=act
sheet.cell(rows,8).value=res
loads.save(self.filepath)
if __name__=="__main__":
data=Get_Data("test_data.xlsx","test_data")
result=data.read_data()
print(result)
print(eval("result[0][4]"))
测试类代码:
import unittest
import time
import HTMLTestRunnerNew
from openpyxl import load_workbook
from class_614.work_http import Http_request
from class_614.work_excel import Get_Data
class Test_Http_request(unittest.TestCase):
def setUp(self):
self.data=Get_Data("test_data.xlsx","test_data")
print("test is begin")
def __init__(self,url,param,method,expect,caseid,methodName='runTest'):
super(Test_Http_request,self).__init__(methodName)
self.url=url
self.param=param
self.method=method
self.expect=expect
self.caseid=caseid
def test_http(self):
# for i in range(len(self.data)):
# url=self.data[i][3]
# param=eval(self.data[i][4])
# method=self.data[i][2]
# https=Http_request(url,param).get_py(method)
print("执行的是第",self.caseid,"几条用例")
https=Http_request(self.url,self.param).get_py(self.method)
try:
self.assertEqual(self.expect,https["reason"])
result='pass'
except AssertionError as e:
print("报错了%s"%e)
result='fail'
raise e
#写入数据
self.data.write_data(self.caseid+1,str(https),result)
def tearDown(self):
print("test is end")
测试用例执行代码
import unittestimport time
import HTMLTestRunnerNew
from class_614.work_test import Test_Http_request
from class_614.work_excel import Get_Data
data=Get_Data("test_data.xlsx","test_data").read_data()
suite=unittest.TestSuite()
for i in range(len(data)):
url=data[i][3]
param=eval(data[i][4])
method=data[i][2]
expect=data[i][5]
print(expect)
caseid=data[i][0]
suite.addTest(Test_Http_request(url,param,method,expect,caseid,'test_http'))
#loads=unittest.TestLoader()
#suite.addTests(loads.loadTestsFromTestCase(Test_Http_request))
now=time.strftime('%Y-%m-%d_%H_%M_%S')
file_path='test'+now+'.html'
with open(file_path,"wb") as file:
runner=HTMLTestRunnerNew.HTMLTestRunner(stream=file, verbosity=2,title=None,description="老黄历的单元测试",tester="五月")
runner.run(suite)