• 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)

    附带代码:

    1. """excel操作"""
    2. import openpyxl
    3. class ExcelHandler:
    4. def __init__(self, file_path):
    5. self.file_path = file_path
    6. self.workbook = None
    7. def open_file(self):
    8. """打开文件"""
    9. workbook = openpyxl.load_workbook(self.file_path)
    10. self.workbook = workbook
    11. return workbook
    12. def get_sheet(self, sheet_name):
    13. """获取sheet表单"""
    14. workbook = self.open_file()
    15. return workbook[sheet_name]
    16. def read_data(self, sheet_name):
    17. """读取数据,并将表格内容按照列表嵌套字典形式返回"""
    18. sheet = self.get_sheet(sheet_name)
    19. rows = list(sheet.rows)
    20. # 获取标题
    21. headers = []
    22. for title in rows[0]:
    23. headers.append(title.value)
    24. data = []
    25. for row in rows[1:]:
    26. row_data = {}
    27. for index, cell in enumerate(row):
    28. row_data[headers[index]] = cell.value
    29. data.append(row_data)
    30. return data
    31. def write(self, sheet_name, row, column, data):
    32. sheet = self.get_sheet(sheet_name)
    33. sheet.cell(row, column).value = data
    34. self.save()
    35. self.close()
    36. def save(self):
    37. """保存文件"""
    38. self.workbook.save(self.file_path)
    39. def close(self):
    40. """关闭文件"""
    41. self.workbook.close(self.file_path)
    42. if __name__ == '__main__':
    43. print(ExcelHandler("web_cases.xlsx").read_data("Sheet1"))
    1. """测试登录功能"""
    2. import unittest
    3. import ddt
    4. from demo_2024.excel_handler import ExcelHandler
    5. def login(username=None, password=None):
    6. """登录"""
    7. if username != None and password != None:
    8. if username == "huahua" and password == "123456":
    9. return {"msg": "login success"}
    10. else:
    11. return {"msg": "username or password is error"}
    12. else:
    13. return {"msg": "username or password is empty"}
    14. # 用封装的excel操作读取出测试用例
    15. cases = ExcelHandler("web_cases.xlsx").read_data("Sheet1")
    16. """数据驱动测试:ddt driver testing"""
    17. @ddt.ddt
    18. class TestLogin(unittest.TestCase):
    19. @ddt.data(*cases)
    20. def test_login(self, case):
    21. data = eval(case["data"])
    22. username = data["username"]
    23. password = data["password"]
    24. expected = case["expected"]
    25. actual = login(username, password)
    26. self.assertTrue(expected == actual["msg"])
    27. if __name__ == '__main__':
    28. unittest.main()

    作业:

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

    上期答案:

    # 作业1
    import unittest
    import os
    
    from 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 openpyxl
    
    work_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.value
        data.append(row_data)
    print(data)
    
    
  • 相关阅读:
    纸张大小和铅笔的规格简述
    文件IO(Linux)
    【刷题系列】链表经典OJ题
    计算机毕业设计Python+Django农产品推荐系统 农产品爬虫 农产品商城 农产品大数据 农产品数据分析可视化 PySpark Hadoop Hive
    CNN记录】pytorch中flatten函数
    Linux Job Control: bg, fg & Ctrl+Z
    Scratch软件编程等级考试一级——20211211
    leetcode 刷题 log day 43
    准备篇(二)Python 教程
    RK3588平台开发系列讲解(DisplayPort篇)DP相关模式说明
  • 原文地址:https://blog.csdn.net/weixin_44745388/article/details/136677074