码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • W31-02-excel和logging使用,实现自动登录百度,并搜索雷军


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

    1.使用excel相关功能:

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

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

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

    1. """
    2. @Time : 2024/8/10 21:28
    3. @Auth : jany
    4. """
    5. import traceback
    6. from tools.keywords import Web
    7. from tools.Logger import path,logger
    8. from tools.Excel import Reader, Writer
    9. def run_case(web, line):
    10. """
    11. 运行一行用例
    12. :param web: 关键字对象
    13. :param line: 一行Excel数据列表
    14. :return:
    15. """
    16. logger.info(line)
    17. # 第四个单元格式关键字
    18. method = line[3]
    19. # 反射获取到用例里面写的关键字函数
    20. func = getattr(web, method)
    21. # 获取参数,是一行里面4~6这三个元素
    22. params = line[4:7]
    23. # 对参数从右往左找,找最后一个不为空的,然后把所有空的全部截掉
    24. # 兼容都是空的情况
    25. index = -1
    26. for i in range(2, -1, -1):
    27. if len(params[i]) > 0:
    28. index = i
    29. break
    30. params = params[0:index + 1]
    31. return func(*params)
    32. # 创建关键字对象
    33. web = Web()
    34. reader = Reader()
    35. writer = Writer()
    36. # 打开一个excel
    37. reader.open_excel(path + 'lib/cases/百度搜索雷军.xlsx')
    38. # 复制新建一个结果文件写入
    39. writer.copy_open(path + 'lib/cases/百度搜索雷军.xlsx', path + 'lib/cases/result-百度搜索雷军.xlsx')
    40. # 获取所有sheet
    41. sheets = reader.get_sheets()
    42. print(sheets)
    43. for sheet in sheets:
    44. # 设置读取的sheet页面
    45. reader.set_sheet(sheet)
    46. writer.set_sheet(sheet)
    47. # 读取当前sheet的所有行
    48. lines = reader.readline()
    49. logger.debug(lines)
    50. # 遍历每一行,然后执行
    51. for i in range(len(lines)):
    52. line = lines[i]
    53. print(line)
    54. if len(line[0]) > 0 or len(line[1]) > 0:
    55. # 分组信息不用跑
    56. continue
    57. # 一次跑完,尽量多发现问题
    58. try:
    59. res = str(run_case(web, line))
    60. writer.write(i, 7, 'PASS', 3)
    61. writer.write(i, 8, res)
    62. except Exception as e:
    63. writer.write(i, 7, 'FAIL', 2)
    64. # # 简单的报错信息
    65. # writer.write(i, 8, e.__str__())
    66. # 报错堆栈信息
    67. writer.write(i, 8, traceback.format_exc())
    68. logger.exception(e)
    69. # 记得保存
    70. writer.save_close()

    跑起来效果图如下:

  • 相关阅读:
    TLS及CA证书申请流程
    致远oa wpsassistservlet任意文件上传漏洞
    Vue Router的介绍
    【云原生之Docker实战】使用Docker部署excalidraw-cn白板工具
    Nacos 注册中心、配置文件中心的常用配置(springcloud)
    【多媒体技术与实践】图像信息获取和处理——编程题汇总
    [附源码]计算机毕业设计JAVA剧本杀门店管理系统-
    手机app测试用例怎么写?手机app测试点有哪些?
    【Postman】Postman+国密SM2+https协议+Api接口获取sign和token解决方法(特定项目参照用,莫照搬)
    卷积神经网络结构有哪些,卷积神经网络结构特点
  • 原文地址:https://blog.csdn.net/java_jane/article/details/140871322
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号