自动化执行Excel用例优化

V3.0
把响应的数据格式转为json
读取Excel数据,可以读取任意行。[001,002-005,006]
# -*- coding: utf-8 -*-
# 2022/1/21
# LiuRenHong
import xlrd
import json
"""
V1.0
读取指定行列数据
实现用例筛选功能
脚本代码和用例分离
V2.0
按照用户需求,读取任意行任意列数据----可变数量参数,*args元组
V3.0
把响应的数据格式转为json
读取Excel数据,可以读取任意行。[001,002-005,006]

"""
epath = "C:\\Users\PC\PycharmProjects\IamGod\data\Delivery_System_V1.5.xls"
def get_excel_data_v1(excelPath, sheetName,  moduleName):
    resList = []#存放结果
    #formatting_info=True 保持样式,打开xls文件
    workbook = xlrd.open_workbook(excelPath, formatting_info=True)
    # print(workbook.sheet_names())#展示所有的表单
    worksheet = workbook.sheet_by_name(sheetName)
    #读取一行数据
    # print(worksheet.row_values(0))
    #读取一列数据
    print(worksheet.col_values(0))
    # print(worksheet.cell(0, 1).value)
    #筛选用例
    idx = 0#行的初始值
    for one in worksheet.col_values(0):
        moduleList = []
        if moduleName in one:
            #获取对应值
            a = worksheet.cell(idx, 9).value
            b = worksheet.cell(idx, 11).value
            resList.append((a,b))
        idx = idx+1
    return resList

def get_excel_data_v2(excelPath, sheetName, caseName, *args):
    resList = []
    argList = []
    workBook = xlrd.open_workbook(excelPath, formatting_info=True)
    workSheet = workBook.sheet_by_name(sheetName)
    print(workSheet.col_values(0))
    for i in args:
        # workSheet.row_values(0).index(i)获取下标
        argList.append(workSheet.row_values(0).index(i))
    print("可变数量参数对应的列为:", argList)
    idx = 0
    for one in workSheet.col_values(0):
        if caseName in one:
            getColData = []#---------------------------必须每次都初始化
            for i in argList:
                res = workSheet.cell(idx, i).value
                getColData.append(res)
            resList.append(getColData)
        idx = idx + 1
    return resList

def is_json(str1):
    try:
        json.loads(str1)
    except ValueError:
        return False
    return True

def get_excel_data_v3(excelPath, sheetName, caseName, *args, runCase=['all']):
    resList = []
    idx = 0
    workBook = xlrd.open_workbook(excelPath, formatting_info=True)
    workSheet = workBook.sheet_by_name(sheetName)
    colList = []
    for one in args:
        colList.append(workSheet.row_values(0).index(one))
    # print("可变数量参数对应的下标是",colList)
    runList = []
    if runCase[0] == 'all':
        runList = workSheet.col_values(0)
    else:
        for i in runCase:
            if '-' in i:
                start_str = i.split('-')[0]
                end_str = i.split('-')[-1]
                for i in range(int(start_str),int(end_str)+1):
                    runList.append(caseName+f"{i:0>3}")
            else:
                runList.append(caseName+f"{i:0>3}")
    # print("选择某几行用例执行",runList)

    for one in workSheet.col_values(0):
        # print("caseName和列名分别是", caseName, one)
        if (caseName in one) and (one in runList):
            get_Col_list = []
            for i in colList:
                # get_Col_list = []
                a = workSheet.cell(idx, i).value
                if is_json(a):
                    a = json.loads(a)
                get_Col_list.append(a)
            resList.append(get_Col_list)
        idx = idx + 1##############################################
        #严重错误,不可以把不同的循环放到同一层级
    return resList

if __name__ == '__main__':
    # res = get_excel_data_v1(epath, "登录模块", "Login")
    # res = get_excel_data_v2(epath, "登录模块", "Login", "URL", "请求参数", "预期结果")
    res = get_excel_data_v3(epath, "登录模块", "Login", "用例编号", "URL", "请求参数", "预期结果", runCase=["001","002-004","006"])
    for i in res:
        print(i)
# -*- coding: utf-8 -*-
# 2022/1/24
# LiuRenHong

from tools.excelControl import get_excel_data_v3
from libs.login import Login
from configs.confg import epath
import pytest
import os

class TestLogin:
    # for i in res:
    #     # print("预期结果------",i)
    #     res1 = Login().login(i[2])
    #     # print("实际响应结果-----",res1)
    #     if i[3]["msg"] == res1["msg"]:
    #         print("严重通过")
    #     else:
    #         print("验证不通过")
    res = get_excel_data_v3(epath, "登录模块", "Login", "请求参数", "响应预期结果")
    @pytest.mark.parametrize(["reqData", "reqBody"],res)
    def test_login_f(self,reqData, reqBody):
        resResult = Login().login(reqData)
        assert reqBody["msg"] == resResult["msg"]

if __name__ == '__main__':
    """
    pytest 运行结果里  
    .  成功
    F  断言失败
    E  语法报错!
    """
    try:
        for one in os.listdir("../reports/tmp"):
            if ".json" in one:
                os.remove(f"../reports/tmp/{one}")#删除旧文件
    except:
        print("第一次执行报告文件,自动创建文件夹")
    pytest.main(['test_login.py','-s','--alluredir','../reports/tmp'])
    os.system("allure serve ../reports/tmp")

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答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文件的结构进行更复杂的操作,例如解析不同分支、处理更多层级的数据等。可以根据具体情况对代码进行适当的优化和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值