W31-02-excel和logging使用,实现自动登录百度,并搜索雷军

接上文:W31-01,本文改为使用excel驱动实现数据驱动维护自动化数据,实现数据与代码分离,主要知识点如下:

1.使用excel相关功能:

pip install openyxl -i https://pypi.tuna.tsinghua.edu.cn/simple

2.反射获取到用例里面写的关键字函数

主函数上代码,依赖文件见附件:

"""
@Time : 2024/8/10 21:28
@Auth : jany
"""
import traceback
from tools.keywords  import Web
from tools.Logger import path,logger
from tools.Excel import Reader, Writer
def run_case(web, line):
    """
    运行一行用例
    :param web: 关键字对象
    :param line: 一行Excel数据列表
    :return:
    """
    logger.info(line)

    # 第四个单元格式关键字
    method = line[3]
    # 反射获取到用例里面写的关键字函数
    func = getattr(web, method)

    # 获取参数,是一行里面4~6这三个元素
    params = line[4:7]
    # 对参数从右往左找,找最后一个不为空的,然后把所有空的全部截掉
    # 兼容都是空的情况
    index = -1
    for i in range(2, -1, -1):
        if len(params[i]) > 0:
            index = i
            break

    params = params[0:index + 1]
    return func(*params)

# 创建关键字对象
web = Web()

reader = Reader()
writer = Writer()

# 打开一个excel
reader.open_excel(path + 'lib/cases/百度搜索雷军.xlsx')
# 复制新建一个结果文件写入
writer.copy_open(path + 'lib/cases/百度搜索雷军.xlsx', path + 'lib/cases/result-百度搜索雷军.xlsx')
# 获取所有sheet
sheets = reader.get_sheets()
print(sheets)

for sheet in sheets:
    # 设置读取的sheet页面
    reader.set_sheet(sheet)
    writer.set_sheet(sheet)

    # 读取当前sheet的所有行
    lines = reader.readline()
    logger.debug(lines)
    # 遍历每一行,然后执行
    for i in range(len(lines)):
        line = lines[i]
        print(line)
        if len(line[0]) > 0 or len(line[1]) > 0:
            # 分组信息不用跑
            continue

        # 一次跑完,尽量多发现问题
        try:
            res = str(run_case(web, line))
            writer.write(i, 7, 'PASS', 3)
            writer.write(i, 8, res)
        except Exception as e:
            writer.write(i, 7, 'FAIL', 2)
            # # 简单的报错信息
            # writer.write(i, 8, e.__str__())
            # 报错堆栈信息
            writer.write(i, 8, traceback.format_exc())
            logger.exception(e)


# 记得保存
writer.save_close()

跑起来效果图如下:

相关推荐
凤枭香12 分钟前
Python OpenCV 傅里叶变换
开发语言·图像处理·python·opencv
测试杂货铺19 分钟前
外包干了2年,快要废了。。
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
艾派森24 分钟前
大数据分析案例-基于随机森林算法的智能手机价格预测模型
人工智能·python·随机森林·机器学习·数据挖掘
小码的头发丝、1 小时前
Django中ListView 和 DetailView类的区别
数据库·python·django
Chef_Chen2 小时前
从0开始机器学习--Day17--神经网络反向传播作业
python·神经网络·机器学习
千澜空2 小时前
celery在django项目中实现并发任务和定时任务
python·django·celery·定时任务·异步任务
斯凯利.瑞恩2 小时前
Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户附数据代码
python·决策树·随机森林
yannan201903132 小时前
【算法】(Python)动态规划
python·算法·动态规划
蒙娜丽宁3 小时前
《Python OpenCV从菜鸟到高手》——零基础进阶,开启图像处理与计算机视觉的大门!
python·opencv·计算机视觉
光芒再现dev3 小时前
已解决,部署GPTSoVITS报错‘AsyncRequest‘ object has no attribute ‘_json_response_data‘
运维·python·gpt·语言模型·自然语言处理