python中操作excel文件及执行结果回写
2021-01-17 04:12
标签:一个 pre data lis exce erro EDA 用例方法 exp 1.设计测试用例,excel中编写用例数据 2.定义测试用例类,编写测试用例方法 定义一个继承于unittest的测试用例类 定义一个测试用例方法(test开头) 重写____init___方法,实现(用例参数和预期结果)参数化 对断言进行异常捕获,出现断言异常回写结果测试用例执行未通过,没有出现异常,回写结果用例执行通过 3.创建测试套件 4.将用例添加到套件 读取excel中的用例数据 遍历用例数据,创建用例对象 将用例对象加入套件 5.使用HTMLTestRunnerNew创建测试运行程序 6.运行测试套件中的所有的用例,生产测试报告 python中操作excel文件及执行结果回写 标签:一个 pre data lis exce erro EDA 用例方法 exp 原文地址:https://www.cnblogs.com/blackzhou/p/12919764.html读写excel表格和结果回写
一、需求
二、实现流程
import unittest
# 导入登录功能函数
from login import login_check
from readexcel import ReadExcel
from register import register
excel = ReadExcel("cases.xlsx", "login")
# 定义登录的测试用例类
class LoginTestCase(unittest.TestCase):
def __init__(self, methodName, data, expected, case_id):
super().__init__(methodName)
self.data = data
self.expected = expected
self.case_id = case_id
def test_login(self):
# 第一步:准备用例数据
# 1、用例的参数:
data = self.data
# 2、预期结果:
expected = self.expected
# 第二步:执行功能函数,获取实际结果
result = login_check(*data)
# 第三步:比对实际结果和预期结果
try:
self.assertEqual(expected, result)
except AssertionError as e:
# 用例执行未通过
excel.write_data(row=self.case_id + 1, column=5, value="未通过")
raise e
else:
excel.write_data(row=self.case_id + 1, column=5, value="通过")
suite=unittest.TestSuite()
excel = ReadExcel("cases.xlsx", "login")
cases = excel.read_data()
for item in cases:
# 通过创建对象去获取测试用例
case = LoginTestCase("test_login", eval(item["data"]), eval(item["expected"]))
suite.addTest(case)
runner = HTMLTestRunner(stream=open("report.html", "wb"), # 打开的报告,将句柄传给stream
tester="小眼睛",
description="报告的描述信息",
title="报告的标题")
runner.run(suite)
三、封装读取和写入excel的方法
import openpyxl
# 用来保存用例数据
class CaseData:
pass
class ReadExcel(object):
def __init__(self, filename, sheet_name):
self.filename = filename
self.sheet_name = sheet_name
def open(self):
"""打开工作薄,选择表单"""
self.workbook = openpyxl.load_workbook(self.filename)
self.sheet = self.workbook[self.sheet_name]
def close(self):
"""关闭工作薄对象,释放内存"""
self.workbook.close()
def read_data(self):
self.open()
# 按行获取所有的格子
rows = list(self.sheet.rows)
# 获取表头行数据
title = []
for r in rows[0]:
title.append(r.value)
# 创建一个空列表 用来存放所有的用例数据
cases = []
# 遍历除了表头剩余的行
for row in rows[1:]:
# 创建一个空列表,用来存储该行的数据
data = []
# 再次遍历该行的每一个格子
for r in row:
# 将格子中的数据,添加到data中
data.append(r.value)
case = dict(zip(title, data))
cases.append(case)
# 关闭工作薄
self.close()
return cases
def read_data_obj(self):
self.open()
# 按行获取所有的格子
rows = list(self.sheet.rows)
# 获取表头行数据
title = []
for r in rows[0]:
title.append(r.value)
# 创建一个空列表 用来存放所有的用例数据
cases = []
# 遍历除了表头剩余的行
for row in rows[1:]:
# 创建一个空列表,用来存储该行的数据
data = []
# 再次遍历该行的每一个格子
for r in row:
# 将格子中的数据,添加到data中
data.append(r.value)
# 将表头和数据打包转换为列表
case = list(zip(title, data))
# 创建一个对象用来保存该行用例数据
case_obj = CaseData()
# 遍历列表中该行用例数据,使用setattr设置为对象的属性和属性值
for k, v in case:
setattr(case_obj, k, v)
# print(case_obj,case_obj.__dict__)
# 将对象添加到cases这个列表中
cases.append(case_obj)
# 关闭工作薄
self.close()
# 返回cases(包含所有用例数据对象的列表)
return cases
def write_data(self, row, column, value):
# 打开工作薄
self.open()
# 写入数据
self.sheet.cell(row=row,column=column,value=value)
# 保存文件
self.workbook.save(self.filename)
# 关闭工作薄
self.close()
四、运行程序
import unittest
from HTMLTestRunnerNew import HTMLTestRunner
from readexcel import ReadExcel
from testcases import LoginTestCase, RegisterTestCase
# 第一步,创建一个测试套件
suite = unittest.TestSuite()
# 第二步:将测试用例,加载到测试套件中
# 1、读取登录功能函数的用例数据,创建用例对象,添加到套件
excel = ReadExcel("cases.xlsx", "login")
cases = excel.read_data()
for item in cases:
# 创建一个用例对象
case = LoginTestCase("test_login", eval(item[‘data‘]), eval(item["expected"]), item["case_id"])
suite.addTest(case)
# 2、读取注册功能函数的用例数据,创建用例对象,添加到套件
excel = ReadExcel("cases.xlsx", "register")
cases = excel.read_data()
for item in cases:
case = RegisterTestCase("test_register", eval(item["data"]), eval(item["expected"]), item["case_id"])
suite.addTest(case)
# 第三步:创建一个测试运行程序启动器
runner = HTMLTestRunner(stream=open("report.html", "wb"), # 打开一个html格式报告文件,将句柄传给stream
tester="musen", # 报告中示的测试人员
description="python24第二次作业报告", # 报告中显示描述信息
title="24期上课的测试报告") # 报告中的标题
# 第四步:使用启动器去执行测试套件
runner.run(suite)
下一篇:深入理解java虚拟机
文章标题:python中操作excel文件及执行结果回写
文章链接:http://soscw.com/index.php/essay/43020.html