python读取excel测试用例数据

# excel_readUtil.py
from openpyxl import load_workbook
import pandas


class HandleExcel:
    """
    封装excel文件处理类
    """
    def __init__(self, filename, sheetname=None):
        """      定义构造方法
        :param filename: 文件名=实例属性
        :param sheetname: 表单名,如果表单名只有一个可以设置为默认值
        """
        self.filename = filename
        self.sheetname = sheetname

    def get_cases(self):
        """
        获取所有的测试用例,实例方法
        :return:为嵌套字典的列表
        """
        # 打开文件:使用load_workbook传入文件名
        wb = load_workbook(self.filename)  # 返回创建一个Workbook的对象, 相当是一个excel文件
        if self.sheetname is None:          # 定位表单,判断是否制定表单默认空,为第一个表单
            ws = wb.active                  # active 获取第一个表单
        else:
            ws = wb[self.sheetname]         # 否则获取指定的表单

        # min_row = 最小行号,max_row=最大行号(可以不写)
        # min_col = 最小列号,max_col=最大列号
        # values_only = 获取单元格的值
        # 获取表头的信息,使用 iter_rows方法,嵌套元祖的元祖,省略最小行号
        head_data_tuple = tuple(ws.iter_rows(max_row=1, values_only=True))[0]
        one_list = []
        for one_tuple in tuple(ws.iter_rows(min_row=2, values_only=True)):  # 不需要表头最小行号为2,不需要最大行号,最大最小列号
            # zip 函数将表头的元祖与每一行用例所在的元祖进行拼接,dict转换为字典后,添加到列表当中 one_list = []
            one_list.append(dict(zip(head_data_tuple, one_tuple)))
        return one_list  # 为嵌套字典的列表

    def get_sheet_name(self):
        excel_total = pandas.ExcelFile(filename)
        if self.sheetname is None:
            sheet_names = excel_total.sheet_names
            # print(sheet_names)
            return sheet_names
        else:
            print("当前标签名: " + self.sheetname)

    def get_one_case(self, row):
        """
        获取某一条测试用例
        :param row: 行号
        :return:嵌套字典的列表,使用位置进行获取
        """
        return self.get_cases()[row - 1]

    def get_max_row(self):  # 获取用例数量
        list1 = self.get_cases()
        max_num = len(list1)
        return max_num

    def write_result(self, row, actual, result):
        """
        写入数据到测试用例指定的行列中
        :param row: 行号
        :param actual: 实际结果
        :param result: 用例执行的结果(Pass或者Fail)
        :return:
        """
        # 同一个Workbook对象, 如果将数据写入到多个表单中, 那么只有最后一个表单能写入成功,需要创建不同的对象
        other_wb = load_workbook(self.filename)     # 创建对象 = 打开一个文件
        if self.sheetname is None:
            other_ws = other_wb.active
        else:
            other_ws = other_wb[self.sheetname]
        # 写入
        if isinstance(row, int) and (2 <= row <= other_ws.max_row):     # 不能修改表头,下一行开始,行号大于2,小于最大的行号
            other_ws.cell(row=row, column=6, value=actual)              # 在第六行写入实际结果
            other_ws.cell(row=row, column=7, value=result)              # 在第七行写入用例执行的结果
            other_wb.save(self.filename)                                # save 保存文件
            other_wb.close()        # close关闭 ----- 读数据的时候不需要关闭,写数据的时候可关闭或不关闭
        else:   # 如果不是整数,行号小于2,并且大于最大的行号
            print("传入的行号有误, 行号应为大于1的整数")

    def choose_case(self):
        list_case =self.get_cases()
        num_case = self.get_max_row()
        run_list = []
        for i in range(0, num_case):
            y = list_case[i]["是否执行"]
            if y == 'y':
                aa = list_case[i]["用例名称"]  # 根据自己的需要进行选择
                run_list.append(aa)
            else:
                print("跳过该用例: "+list_case[i]["用例名称"])
        print(run_list)
        return run_list


if __name__ == '__main__':      # 自己写的模块自己用使用 main 函数
    filename = "C://study//pythonT//pythonProject//test_cases//caseqq.xlsx"
    sheetname = "case"     # 指定第二个表单名
    # 创建一个对象,filename=文件名和sheetname=表单名可以不传
    # do_excel = HandleExcel(filename)  # 传文件名,不传默认第一个表单

    do_excel = HandleExcel(filename, sheetname)
    # 获取所有的测试用例cases,使用对象调用实例方法
    cases = do_excel.get_cases()
    # print(cases)
    # print(cases[0]['序号'])
    # 写入,在第二行写入"20230918", "设置Pass"
    # do_excel.write_result(2, "20230918", "设置pass")
    # sheets = do_excel.get_sheet_name()
    do_excel.choose_case()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要将Xmind转换成Excel测试用例,可以使用Python编程语言进行自动化操作。下面是一个简单的步骤: 1. 安装所需的Python库:首先,需要安装一些Python库以便处理Xmind和Excel文件。可以使用pip命令安装openpyxl和xmindparser库:`pip install openpyxl xmindparser` 2. 导入所需的库:在Python脚本中,导入openpyxl和xmindparser库以及其他可能需要的库文件: ```python import openpyxl import xmindparser ``` 3. 解析Xmind文件:使用xmindparser库将Xmind文件解析为Python对象,以便进一步处理: ```python xmind_file = xmindparser.load("path_to_xmind_file.xmind") ``` 4. 创建Excel文件和工作表:使用openpyxl库创建一个Excel文件并添加一个工作表: ```python excel_file = openpyxl.Workbook() sheet = excel_file.active ``` 5. 遍历Xmind对象并写入Excel文件:使用循环遍历Xmind对象的各个部分,并将它们写入Excel文件中的相应位置。具体如何遍历和写入将根据Xmind文件的结构而定,以下是一个示例: ```python for topic in xmind_file[0]["topic"]["topics"]: sheet.cell(row=row_num, column=1, value=topic["title"]) for subtopic in topic["topics"]: sheet.cell(row=row_num, column=2, value=subtopic["title"]) row_num += 1 ``` 6. 保存并关闭Excel文件:在完成写入后,使用openpyxl库的save方法将Excel文件保存在磁盘上,并使用close方法关闭文件: ```python excel_file.save("path_to_excel_file.xlsx") excel_file.close() ``` 通过以上步骤,就能够使用Python将Xmind转换为Excel测试用例。根据实际需求,可能需要进一步处理和调整代码,例如设置样式、添加其他信息等。 ### 回答2: Python可以使用一些库和工具将Xmind格式的思维导图转换为Excel测试用例。下面介绍一种常见的方法: 1. 首先,我们需要安装并导入相关库,例如`xlwt`用于创建Excel文件、`xmind`用于读取Xmind文件等。 ```python import xlwt from xmindparser import xmind_to_dict ``` 2. 接下来,我们需要将Xmind文件加载并转换为字典。这可以通过`xmind_to_dict`函数来实现。 ```python xmind_file = 'path/to/xmind_file.xmind' data = xmind_to_dict(xmind_file) ``` 3. 现在,我们可以通过遍历字典中的内容来提取测试用例的相关信息,并将其存储到Excel文件中。 ```python workbook = xlwt.Workbook() worksheet = workbook.add_sheet('Test Cases') # 写入表头 header = ['用例名称', '用例编号', '前置条件', '步骤', '预期结果'] for col, name in enumerate(header): worksheet.write(0, col, name) # 遍历Xmind字典 def parse_xmind(data, row): for item in data: if 'topic' in item: topic = item['topic'] case_name = topic['title'] case_id = topic['id'] precondition = '' # 前置条件 steps = '' # 步骤 expected_result = '' # 预期结果 # 检查是否存在子主题 if 'topics' in topic: for sub_topic in topic['topics']: if 'title' in sub_topic: title = sub_topic['title'] if title == '前置条件': precondition = sub_topic['topics'][0]['title'] elif title == '步骤': for step in sub_topic['topics']: steps += step['topics'][0]['title'] + '\n' elif title == '预期结果': for result in sub_topic['topics']: expected_result += result['topics'][0]['title'] + '\n' # 将用例信息写入Excel worksheet.write(row, 0, case_name) worksheet.write(row, 1, case_id) worksheet.write(row, 2, precondition) worksheet.write(row, 3, steps) worksheet.write(row, 4, expected_result) row += 1 # 递归处理子主题 if 'topics' in topic: row = parse_xmind(topic['topics'], row) return row # 开始处理Xmind数据 row = parse_xmind(data, 1) # 保存Excel文件 workbook.save('path/to/test_cases.xls') ``` 以上是将Xmind转换为Excel测试用例的一个简单示例。通过解析Xmind文件的层级结构,并针对每个主题提取相应的信息,我们可以轻松地生成Excel文件,其中包含测试用例的名称、编号、前置条件、步骤和预期结果等内容。 ### 回答3: Python提供了丰富的第三方库和工具,可以帮助我们实现将XMind转换成Excel测试用例的功能。下面是一个简单的示例代码,用于将XMind文件中的测试用例转换成Excel格式: 1. 首先,我们需要使用Python中的xlwt库来创建Excel文件并写入测试用例数据。 ```python import xlwt from xmindparser import xmind_to_dict def convert_xmind_to_excel(xmind_file, excel_file): # 读取XMind文件 workbook_dict = xmind_to_dict(xmind_file) # 创建Excel文件 workbook = xlwt.Workbook() worksheet = workbook.add_sheet('Test Cases') # 写入表头 headers = ['Test Case ID', 'Test Case Name', 'Steps', 'Expected Result'] for index, header in enumerate(headers): worksheet.write(0, index, header) # 写入测试用例数据 row = 1 for sheet in workbook_dict['sheets']: for topic in sheet['rootTopic']['topics']: test_case_id = topic['title'] test_case_name = topic['topics'][0]['title'] steps = topic['topics'][0]['topics'][0]['title'] expected_result = topic['topics'][0]['topics'][0]['topics'][0]['title'] worksheet.write(row, 0, test_case_id) worksheet.write(row, 1, test_case_name) worksheet.write(row, 2, steps) worksheet.write(row, 3, expected_result) row += 1 # 保存Excel文件 workbook.save(excel_file) ``` 2. 在上述代码中,我们使用了`xmindparser`库来解析XMind文件,需要使用`pip install xmindparser`命令来安装该库。 3. `convert_xmind_to_excel`函数接受两个参数,分别是XMind文件路径以及要保存的Excel文件路径。 4. 函数首先使用`xmind_to_dict`函数将XMind文件解析成一个字典,然后创建一个Excel对象。 5. 接下来,我们按照Excel的格式,将测试用例数据逐行写入Excel文件,包括测试用例ID、名称、步骤和预期结果。 6. 最后,使用`workbook.save(excel_file)`保存Excel文件。 通过以上代码,我们可以将XMind文件中的测试用例转换成Excel格式,方便进行测试用例管理和执行。当然,根据实际需求,还可以根据XMind文件的结构进行更复杂的操作,例如解析不同分支、处理更多层级的数据等。可以根据具体情况对代码进行适当的优化和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值