当前位置: 首页 > news >正文

excel封装和ddt D17

1)excel封装 openpyxl的操作

2)ddt 数据驱动测试

## openpyxl的操作

1.安装:pip install openpyxl

2.导入 openpyxl: import openpyxl

3.workbook对象:工作簿,openpyxl.load_workbook()

4.sheet对象:表单 sheet = workbook["表单名"]

5.cell对象:单元格 cell = sheet.cell()

## ddt 数据驱动测试

1.安装:pip install ddt

2.导入:import ddt

3.测试类加上 @ddt.ddt

4.需要进行数据驱动的方法上加@ddt.data(*测试数据)

5.测试用例方法用参数接收 def test_login(self,case_info)

附带代码:

"""excel操作"""
import openpyxlclass ExcelHandler:def __init__(self, file_path):self.file_path = file_pathself.workbook = Nonedef open_file(self):"""打开文件"""workbook = openpyxl.load_workbook(self.file_path)self.workbook = workbookreturn workbookdef get_sheet(self, sheet_name):"""获取sheet表单"""workbook = self.open_file()return workbook[sheet_name]def read_data(self, sheet_name):"""读取数据,并将表格内容按照列表嵌套字典形式返回"""sheet = self.get_sheet(sheet_name)rows = list(sheet.rows)# 获取标题headers = []for title in rows[0]:headers.append(title.value)data = []for row in rows[1:]:row_data = {}for index, cell in enumerate(row):row_data[headers[index]] = cell.valuedata.append(row_data)return datadef write(self, sheet_name, row, column, data):sheet = self.get_sheet(sheet_name)sheet.cell(row, column).value = dataself.save()self.close()def save(self):"""保存文件"""self.workbook.save(self.file_path)def close(self):"""关闭文件"""self.workbook.close(self.file_path)if __name__ == '__main__':print(ExcelHandler("web_cases.xlsx").read_data("Sheet1"))
"""测试登录功能"""
import unittest
import ddtfrom demo_2024.excel_handler import ExcelHandlerdef login(username=None, password=None):"""登录"""if username != None and password != None:if username == "huahua" and password == "123456":return {"msg": "login success"}else:return {"msg": "username or password is error"}else:return {"msg": "username or password is empty"}# 用封装的excel操作读取出测试用例
cases = ExcelHandler("web_cases.xlsx").read_data("Sheet1")"""数据驱动测试:ddt driver testing"""@ddt.ddt
class TestLogin(unittest.TestCase):@ddt.data(*cases)def test_login(self, case):data = eval(case["data"])username = data["username"]password = data["password"]expected = case["expected"]actual = login(username, password)self.assertTrue(expected == actual["msg"])if __name__ == '__main__':unittest.main()

作业:

ddt数据驱动
1, 封装 excel 操作的类(自己实现!!)
2, 基于ddt, 实现 login 函数的单元测试。

上期答案:

# 作业1
import unittest
import osfrom lenmon.libs.HTMLTestRunnerNew import HTMLTestRunner# 初始化一个加载器
loader = unittest.TestLoader()dir_path = os.path.dirname(os.path.abspath(__file__))
# 使用loader收集所有的测试用例
test_suite = loader.discover(dir_path)# 执行测试用例,生成测试报告
with open("reports.html", "wb") as f:runner = HTMLTestRunner(f,title="python第一次测试报告",description="登录模块的测试报告",tester="wuyi")runner.run(test_suite)
# 作业2
import openpyxlwork_book = openpyxl.open("web_cases.xlsx")
sheet = work_book["Sheet1"]
rows = list(sheet.rows)data = []
headers = []
for title in rows[0]:headers.append(title.value)for row in rows[1:]:row_data = {}for index, cell in enumerate(row):row_data[headers[index]] = cell.valuedata.append(row_data)
print(data)
http://www.lryc.cn/news/319898.html

相关文章:

  • PHP8编译安装
  • 3D Gaussian Splatting for Real-Time Radiance Field Rendering(慢慢啃,还是挺复杂的)
  • 二叉树<II>:二叉树的四种遍历方式代码实现Python3
  • vite ts vue 项目提示 . Projects must list all files or use an include pattern.
  • 鲸鱼优化算法改进风储机组一次调频出力分配系数,以频率偏差最小为目标优化函数,结合鲸鱼算法WOA捕食过程,改进风储出力分配系数simulink与matlab联合
  • C语言经典面试题目(七)
  • 2024华为春招Django面试题大全,最全知识点揭秘,面试必备!
  • 搜维尔科技:使用SenseGlove Nova手套操纵其“CAVE”投影室中的虚拟对象
  • 独立服务器的优势
  • 前端框架vue的样式操作,以及vue提供的属性功能应用实战
  • 【自动化测试】如何在jenkins中搭建allure
  • 2.域控如何强制转移操作主机角色?使用命令如何强制转移域控的操作角色?
  • C# event的使用
  • 外包干了9天,技术退步明显。。。。。
  • Android Framework 之 Python
  • 【Fitten Code】“吊打“Github Copilot的国内免费代码辅助插件
  • Git中的换行符CRLF和LF问题
  • go语言文件操作
  • 七月论文审稿GPT第3.2版和第3.5版:通过paper-review数据集分别微调Mistral、gemma
  • QML 自定义时间编辑控件
  • 后端程序员入门react笔记(八)-redux的使用和项目搭建
  • 深度学习 精选笔记(13.2)深度卷积神经网络-AlexNet模型
  • 【C#图解教程】笔记
  • A Workload‑Adaptive Streaming Partitioner for Distributed Graph Stores(2021)
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Search)
  • GPIO八种工作模式实践总结
  • ElementUI两个小坑
  • 前端基础——HTML傻瓜式入门(2)
  • 操作系统(AndroidIOS)图像绘图的基本原理
  • 测试用例的设计(2)