基于关键字驱动设计Web UI自动化测试框架!

news2024/11/14 21:03:28

引言

在自动化测试领域,关键字驱动测试(Keyword-Driven Testing, KDT)是一种高效且灵活的方法,它通过抽象测试用例中的操作为关键字,实现了测试用例与测试代码的分离,从而提高了测试脚本的可维护性和可扩展性。本文将详细介绍如何设计并实现一个基于关键字驱动的 Web UI 自动化测试框架,包括配置文件读取、Excel 测试用例管理、关键字驱动类实现以及测试执行逻辑,旨在提供一个可发布的完整解决方案。

框架概述

该框架围绕关键字驱动设计,通过封装底层逻辑代码为关键字驱动类,并使用 Excel 文件管理测试用例,实现了测试用例与测试代码的分离。框架的主要组成部分包括:

配置文件:用于存储浏览器设置等配置信息。 Excel 测试用例:以表格形式存储测试用例,包括关键字、定位器、参数等信息。 关键字驱动类:封装元素定位、操作等底层逻辑代码为关键字方法。 工具函数:用于读取配置文件和 Excel 文件。 测试执行程序:整合所有部分,执行测试用例并生成报告(尽管本文未详细展示报告生成部分)。

框架实现

配置文件读取 (config/settings.py)

创建一个 Python 模块来读取配置文件,支持动态调整浏览器设置。

# config/settings.py
import configparser

def load_settings(file_path='config/settings.ini'):
    config = configparser.ConfigParser()
    config.read(file_path)

    browser_settings = {}
    if 'Browser' in config:
        browser_settings['driver_path'] = config['Browser']['driver_path']
        # 可以根据需要添加更多浏览器选项

    return browser_settings

Excel 测试用例读取 (tools/excel_reader.py)

使用 pandas 库读取 Excel 文件中的测试用例。

# tools/excel_reader.py
import pandas as pd

def read_excel_test_cases(file_path):
    return pd.read_excel(file_path, engine='openpyxl')

关键字驱动类 (keys/keyword_driver.py)

封装元素定位和操作方法为关键字。

# keys/keyword_driver.py
from selenium.webdriver.common.by import By
from Base.selenium_wrapper import find_element  # 假设Base目录下有selenium封装

class KeywordDriver:
    def __init__(self, driver):
        self.driver = driver

    def type_text(self, locator, text):
        element = find_element(self.driver, locator['type'], locator['value'])
        element.clear()
        element.send_keys(text)

    def click_element(self, locator):
        element = find_element(self.driver, locator['click'], locator['value'])
        element.click()

    # 可以继续添加其他关键字方法

测试执行逻辑 (main.py)

整合所有部分,执行测试用例。

# main.py
from selenium import webdriver
from config.settings import load_settings
from tools.excel_reader import read_excel_test_cases
from keys.keyword_driver import KeywordDriver

def execute_tests(test_cases, driver):
    keyword_driver = KeywordDriver(driver)
    for index, row in test_cases.iterrows():
        keyword = row['keyword']
        locator = {'type': row['locator_type'], 'value': row['locator_value']}
        param = row.get('param')  # 使用get方法避免KeyError

        if keyword == 'type_text':
            keyword_driver.type_text(locator, param)
        elif keyword == 'click_element':
            keyword_driver.click_element(locator)
        else:
            print(f"Unsupported keyword: {keyword}")

def main():
    browser_settings = load_settings()
    driver = webdriver.Chrome(executable_path=browser_settings['driver_path'])

    test_cases = read_excel_test_cases('data/test_cases.xlsx')
    execute_tests(test_cases, driver)

    driver.quit()

if __name__ == '__main__':
    main()

Excel 测试用例格式

Excel 测试用例文件(如 data/test_cases.xlsx)应包含以下列:

  • keyword: 关键字(如 type_text, click_element)

  • locator_type: 定位器类型(如 id, xpath)

  • locator_value: 定位器值

  • param: 参数(可选,根据关键字需要)

确保 Excel 文件的格式与代码中读取的方式相匹配。

注意事项

  • 确保所有依赖库(如 selenium, pandas, openpyxl)已安装。

  • 根据实际需求调整配置文件、Excel 模板和代码逻辑。

  • 考虑添加异常处理和日志记录以增强框架的健壮性和可调试性。

  • 对于更复杂的测试用例,可能需要扩展关键字驱动类以支持更多的关键字和方法。

  • 报告生成部分可以根据需要集成 Allure 或其他测试报告工具。

通过上述实现,我们构建了一个基于关键字驱动的 Web UI 自动化测试框架,它支持灵活的测试用例管理和高效的测试执行,为 Web 应用的自动化测试提供了有力的支持。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1942682.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5.Fabric的共识机制

在Fabric中,有以下3中典型共识机制。 Solo共识 solo共识机制只能用于单节点模式,即只能有一个Orderer节点,因此,其共识过程很简单,每接收到一个交易信息,就在共识模块的控制下产生区块并广播给节点存储到账本中。 Solo 模式下的共识只适用于一个Orderer节点,所以可以在…

AI 驱动下的一体化分布式数据库:滴滴、快手、中国恩菲、好未来、翼鸥教育共话创新应用实践|OceanBase Meetup 精彩回顾

7月6日,OceanBase Meetup 北京站——“AI 驱动下的一体化分布式数据库:跨行业多场景的创新应用与实战”举办。来自滴滴、快手、中国恩菲、好未来、翼鸥教育、蚂蚁集团及OceanBase等众多行业技术专家与资深用户,围绕众多用户关注的AI 与数据库…

Performance Metrics in Evaluating Stable Diffusion Models

1.Performance Metrics in Evaluating Stable Diffusion Models 笔记来源: 1.Performance Metrics in Evaluating Stable Diffusion Models 2.Denoising Diffusion Probabilistic Models 3.A simple explanation of the Inception Score 4.What is the inception s…

【LLM】-05-提示工程-部署Langchain-Chat

目录 1、软硬件要求 1.1、软件要求 1.2、硬件要求 1.3、个人配置参考 2、创建cuda环境 3、下载源码及模型 4、配置文件修改 5、初始化知识库 5.1、训练自己的知识库 6、启动 7、API接口调用 7.1、使用openai 参考官方wiki,本文以Ubuntu20.04_x64&#xf…

揭秘!电源炼成记:从基础原理到高端设计的全面解析

文章目录 初始构想:需求驱动设计原理探索:选择适合的拓扑结构精细设计:元器件选型与布局环路稳定:控制策略与补偿网络严格测试:验证与优化持续改进:创新与技术迭代《硬件十万个为什么(电源是怎样…

云计算实训11——web服务器的搭建、nfs服务器的搭建、备份静态文件、基于linux和windows实现文件共享

一、搭建web服务器 1.关闭firewall和selinux 关闭防火墙 systemctl stop firewalld systemctl disable firewalld 停用selinux setenforce 0 配置文件中让sellinux不再启动 vim /etc/selinux/config SELINUXpermissive 2.编辑dns配置文件 vim /etc/resolv.conf nameserver 114.…

Sql Server缓冲池、连接池等基本知识(附Demo)

目录 前言1. 缓存池2. 连接池3. 彩蛋 前言 基本的知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)Mysql优化高级篇(全)Mysql底层原理详细剖析常见面试题(全) 1…

【深度学习入门篇 ⑪】自注意力机制

【🍊易编橙:一个帮助编程小伙伴少走弯路的终身成长社群🍊】 大家好,我是小森( ﹡ˆoˆ﹡ ) ! 易编橙终身成长社群创始团队嘉宾,橙似锦计划领衔成员、阿里云专家博主、腾讯云内容共创官…

基于微信小程序+SpringBoot+Vue的大学生科技竞赛管理系统(带1w+文档)

基于微信小程序SpringBootVue的大学生科技竞赛管理系统(带1w文档) 基于微信小程序SpringBootVue的大学生科技竞赛管理系统(带1w文档) 本系统中采用的开发工具包括软件工具和硬件工具,软件采用了Java语言和MySQL数据库,利用微信小程序技术,框架…

从零训练一个多模态LLM:预训练+指令微调+对齐+融合多模态+链接外部系统

本文尝试梳理一个完整的多模态LLM的训练流程。包括模型结构选择、数据预处理、模型预训练、指令微调、对齐、融合多模态以及链接外部系统等环节。 01 准备阶段 1 模型结构 目前主要有三种模型架构,基于Transformer解码器,基于General Language Model&a…

51单片机嵌入式开发:16、STC89C52RC 嵌入式之 步进电机28BYJ48、四拍八拍操作

STC89C52RC 嵌入式之 步进电机28BYJ48、四拍八拍操作 STC89C52RC 之 步进电机28BYJ48操作1 概述1.1 步进电机概述1.2 28BYJ48概述 2 步进电机工作原理2.1 基本原理2.2 28BYJ48工作原理2.3 28BYJ48控制原理 3 电路及软件代码实现4 步进电机市场价值 STC89C52RC 之 步进电机28BYJ…

英语(二)-我的学习方式

章节章节汇总我的学习方式历年真题作文&范文 目录 1、背单词 2、学语法 3、做真题 4、胶囊助学计划 写在最前:我是零基础,初二就听天书的那种。 本专栏持续更新学习资料 1、背单词 单词是基础,一定要背单词!考纲要求要…

瑞吉外卖学习(一)

pom文件的导入中 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.6</version><relativePath/> <!-- lookup parent from repository --></…

【STM32 HAL库】DMA+串口

DMA 直接存储器访问 DMA传输&#xff0c;将数据从一个地址空间复制到另一个地址空间。-----“数据搬运工”。 DMA传输无需CPU直接控制传输&#xff0c;也没有中断处理方式那样保留现场和恢复现场&#xff0c;它是通过硬件为RAM和IO设备开辟一条直接传输数据的通道&#xff0c…

构建网络安全之盾:应对“微软蓝屏”教训的全面策略

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

【算法】一致性哈希

一、引言 在分布式系统中&#xff0c;数据存储和访问的均匀性、高可用性以及可扩展性一直是核心问题。一致性哈希算法&#xff08;Consistent Hashing&#xff09;是一种分布式算法&#xff0c;因其出色的分布式数据存储特性&#xff0c;被广泛应用于缓存、负载均衡、数据库分片…

【Django5】模板引擎

系列文章目录 第一章 Django使用的基础知识 第二章 setting.py文件的配置 第三章 路由的定义与使用 第四章 视图的定义与使用 第五章 二进制文件下载响应 第六章 Http请求&HttpRequest请求类 第七章 会话管理&#xff08;Cookies&Session&#xff09; 第八章 文件上传…

如何检查我的网站是否支持HTTPS

HTTPS是一种用于安全通信的协议&#xff0c;是HTTP的安全版本。HTTPS的主要作用在于为互联网上的数据传输提供安全性和隐私保护。通常是需要在网站安装部署SSL证书来实现网络数据加密传输&#xff0c;安全加密功能。 那么如果要检查你的网站是否支持HTTPS&#xff0c;可以看下…

培训第十一天(nfs与samba共享文件)

上午 1、环境准备 &#xff08;1&#xff09;yum源 &#xff08;一个云仓库pepl仓库&#xff09; [rootweb ~]# vim /etc/yum.repos.d/hh.repo [a]nameabaseurlfile:///mntgpgcheck0[rootweb ~]# vim /etc/fstab /dev/cdrom /mnt iso9660 defaults 0 0[rootweb ~]# mount -a[…

软件测试09 自动化测试技术(Selenium)

重点/难点 重点&#xff1a;理解自动化测试的原理及其流程难点&#xff1a;Selinum自动化测试工具的使用 目录 系统测试 什么是系统测试什么是功能测试什么是性能测试常见的性能指标有哪些 自动化测试概述 测试面临的问题 测试用例数量增多&#xff0c;工作量增大&#xff…