1、公共模块
---> login.xls
""" common (package) ---> ReadFile.py """ import xlrd class ReadExcel(): def __init__(self,file_path,sheetx): self.book = xlrd.open_workbook(file_path) self.sheet = self.book.sheet_by_index(sheetx) def getValue(self,row_index,col_index): """ 获取excel单元格数据 """ return self.sheet.cell_value(row_index,col_index) def getCols(self): """ 获取有效行数 """ return self.sheet.ncols def getRows(self): """ 获取有效列数 """ return self.sheet.nrows
""" common (package) ---> WriteFile.py """ import xlrd from xlutils.copy import copy def WriteExcel(filepath,sheetx,rowx,colx,value): """ excel写入操作 """ book = xlrd.open_workbook(filepath) newbook = copy(book) sheet = newbook.get_sheet(sheetx) sheet.write(rowx,colx,value) newbook.save(filepath)
""" common (package) ---> var.py """ """ excel用例模块等变量 """ url = 2 Method = 3 header = 4 body = 5 test_response = 7 result = 8 ok = "成功" fail = "失败"
2、输出testcase如下
import requests import unittest import HTMLTestRunner import json from API_test.common.ReadFile import ReadExcel from API_test.common import var from API_test.common.WriteFile import WriteExcel class TestLogin(unittest.TestCase): def setUp(self): self.url = ReadExcel("D:\work_doc\CodeFile\API_test\common\login.xls", 0).getValue(1, var.url) self.headers = json.loads(ReadExcel("D:\work_doc\CodeFile\API_test\common\login.xls", 0).getValue(1, var.header)) def test01(self): """ 正向用例 """ payload = json.loads(ReadExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0).getValue(1,var.body)) response = requests.request("POST", self.url, headers=self.headers, json = payload) # 调用 WriteExcel 公共方法,将返回的报文实际结果写入到 excel 中 WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0,1,var.test_response,response.text) # 断言 try: self.assertEqual(response.json()["msg"],"成功",msg="test01 error") except: # 调用 WriteExcel 公共方法,将结论写入到 excel 中 WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0,1,var.result,var.fail) # 再次断言生成测试报告,避免 try 异常处理将异常用例 pass 掉 self.assertEqual(response.json()["msg"], "成功", msg="test01 error") else: WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0,1,var.result,var.ok) def test02(self): """ 账号错误 """ payload = json.loads(ReadExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0).getValue(2,var.body)) response = requests.request("POST", self.url, headers=self.headers, json = payload) WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0,2,var.test_response,response.text) try: self.assertEqual(response.json()["msg"],"用户不存在",msg="test02 error") except: WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls", 0, 2, var.result, var.fail) self.assertEqual(response.json()["msg"],"用户不存在",msg="test02 error") else: WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0,2,var.result,var.ok) def test03(self): """ 密码错误 """ payload = json.loads(ReadExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0).getValue(3,var.body)) response = requests.request("POST", self.url, headers=self.headers, json = payload) WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0,3,var.test_response, response.text) try: self.assertEqual(response.json()["msg"],"解密密码错误",msg="test03 error") except: WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls", 0, 3, var.result, var.fail) self.assertEqual(response.json()["msg"],"解密密码错误",msg="test03 error") else: WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0,3,var.result,var.ok) if __name__ == '__main__': suite = unittest.TestSuite() testcase = [TestLogin("test01"),TestLogin("test02"),TestLogin("test03")] suite.addTests(testcase) reportfile = open("D:\work_doc\CodeFile\API_test\\report\\testreport.html", "wb") runner = HTMLTestRunner.HTMLTestRunner(stream=reportfile,title="TestReport",description="测试结果") runner.run(suite) reportfile.close()
3、循环读取excel文件内的参数
from python_API.common.ReadExcel import ReadExcel import requests import json import unittest class Test(unittest.TestCase): def setUp(self): self.url = ReadExcel("d:\\dym.xls","Sheet1").getValue(1,1) self.Method = ReadExcel("d:\\dym.xls","Sheet1").getValue(1,2) self.header = json.loads(ReadExcel("d:\\dym.xls","Sheet1").getValue(1,3)) def test01(self): #调用读取excel类中的获取行数方法getRows(),获取有效行数 for row in range(ReadExcel("d:\\dym.xls","Sheet1").getRows()): #因为第一行为标题,所以row为0时不能用来取值 if row >=1: body = json.loads(ReadExcel("d:\\dym.xls","Sheet1").getValue(row,4)) response = requests.request(self.Method,self.url,headers=self.header,params=body) if row == 1: if response.json()["executeStatus"] == 0: pass else: print ("case01 error!") else: if response.json()["executeStatus"] == 1: pass else: print ("case02 error!") if __name__ == '__main__': unittest.main()