全面提升测试效率,一键实现多文件、多Sheet的WEB自动化测试!

news2024/11/19 1:30:29

 目录

前言:

设计目标

框架结构

实现

总结


前言:

在WEB开发中,自动化测试框架是一个不可或缺的组件。封装一个既能支持多文件,又能支持多Sheet的WEB自动化框架,将会极大地提升我们的开发效率。下面我将会详细介绍这样一个框架的设计、结构以及实现。

设计目标

WEB自动化框架的最基本功能就是能够对WEB应用进行操作,例如填写表单、点击按钮以及断言页面的某些属性等。另外,这个框架还需要满足如下几个设计要求:

1. 支持多文件: 支持同时测多个测试用例文件(Excel文件)。

2. 支持多Sheet: 每个测试用例文件中都可能存在多个Sheet,需要能够同时对多个Sheet进行测试。

3. 简单易用: 框架需要足够简单易用,降低使用难度。

框架结构

该框架主要由三部分组成:主程序、测试数据文件以及测试用例。

主程序:主程序主要负责读取测试数据文件中的测试用例,并执行自动化测试。

测试数据文件:框架支持多文件,已设计为Excel文件。每个Excel文件可以有多个Sheet,每个Sheet对应一个测试用例。

测试用例:测试用例是Excel文件中的Sheet,里面包含测试用例的所有数据,例如测试步骤、期望结果等。

实现

下面用Python代码实现具体功能,代码详解见注释。

import unittest
from selenium import webdriver
from openpyxl import load_workbook

class MyTestCase(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        # 创建一个浏览器 driver 实例
        cls.driver = webdriver.Chrome()
        cls.driver.maximize_window()
        cls.driver.implicitly_wait(10)

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()

    def test_excel_data(self):
        """从Excel文件中读取测试数据"""
        
        # 加载 Excel 文件
        wb = load_workbook(filename='web_autotest.xlsx')

        # 遍历所有 Sheet
        # 每个 Sheet 单独执行一次自动化测试
        for sheetname in wb.sheetnames:
            ws = wb[sheetname]
            # 遍历所有行
            for row in ws.iter_rows(min_row=2):
                # 读取测试数据
                data = {}
                data['step'] = row[0].value
                data['locator'] = row[1].value
                data['value'] = row[2].value
                data['expect'] = row[3].value

                # 执行测试步骤
                self._test_step(data)

    def _test_step(self, data):
        """执行测试步骤"""

        step, locator, value, expect = data.values()

        # 确定定位方式
        if ':' in locator:
            by = locator.split(':')[0]
            value = locator.split(':')[1]
        else:
            by = 'xpath'

        # 执行测试步骤
        if step == 'open':
            self.driver.get(value)
        elif step == 'input':
            self.driver.find_element(by=by, value=value).send_keys(value)
        elif step == 'click':
            self.driver.find_element(by=by, value=value).click()
        elif step == 'assert':
            self.assertEqual(expect, self.driver.find_element(by=by, value=value).text)

总结

本文介绍了一种支持多文件、多Sheet的WEB自动化测试框架的设计与实现。该框架能够非常方便地用于WEB应用自动化测试,提升开发效率。希望这篇文章能够对WEB开发领域的同学有所帮助,欢迎大家多交流!

 作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些自动化测试前进之路的必须品,如果你用得到的话可以直接拿走,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

获取方式:留言【自动化测试】即可获取
【自动化测试交流】:574737577(进群备注ccc)icon-default.png?t=N4N7http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=kBejXNHnzeKNqwOzwf8uRo-EPmQUZ7wl&authKey=yTwGvzhroHT6GcHrdGUH7BAFUlC4RFn1POhNBRXhQGm3qkeBc4%2F7DGYk%2Byi9vymF&noverify=0&group_code=574737577

 

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

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

相关文章

GPT-4平替版:MiniGPT-4,支持图像理解和对话,现已开源

项目地址:https://minigpt-4.github.io/ 论文链接:https://github.com/Vision-CAIR/MiniGPT-4/blob/main/MiniGPT_4.pdf 代码:https://github.com/Vision-CAIR/MiniGPT-4 视频:https://youtu.be/__tftoxpBAw 数据集&#xff…

el-dialog 关闭再打开后窗口内容不刷新问题

页面中有增加和编辑两个功能,由于弹窗样式都是一样的,于是将它拆分成一个子组件,父组件把状态传给子组件,子组件根据这个状态判断是做编辑操作还是新增操作. 编辑 添加 问题一:但是这样遇到了一个问题,在编辑时,只有第一次点编辑时,回显的数据才能正确显…

大学生就业工资低,想转行IT?0基础培训班学习半年云计算出来可以就业吗?挑战高薪职业!

大学生就业工资低,想转行IT?0基础学习云计算可以就业吗? 大学生就业工资低,想转行IT?0基础培训班学习半年云计算出来可以就业吗?这是一个很常见的问题,也是很多大学毕业生关心的话题。根据我了解…

探索2023年海外网红营销合作方式:提升品牌曝光度的创新策略

随着社交媒体的崛起和用户对网红的追捧,海外网红营销已经成为品牌推广的不可忽视的一部分。在2023年,有7种最火爆的海外网红营销合作方式备受瞩目。本文Nox聚星将和大家一起来详细了解这7种方式,为品牌提供更多营销灵感和策略。 1、跨平台合作…

Codeforces Round 834 (Div. 3)

题集链接 Codeforces Round 834 A. Yes-Yes?B. Lost PermutationC. Thermostat A. Yes-Yes? Example input 12 YES esYes codeforces es se YesY esYesYesYesYesYesYe seY Yess sY o Yesoutput NO YES NO YES NO YES YES NO NO YES NO YES题意&题解: 其实就…

Windows环境下安装及部署Nginx教程(含多个站点部署)

目录 一、下载安装Nginx 二、部署Nginx 三、多站点部署的情况 1、nginx域名解析,虚拟主机: 四、带https的站点如何部署,与http的有何不同点? 一、下载安装Nginx 1、官网下载地址:https://nginx.org/en/download.h…

2022 年第四届河南省 CCPC 大学生程序设计竞赛vp补题

Dashboard - 2022 CCPC Henan Provincial Collegiate Programming Contest - Codeforces Problem B. Hash 思路: 发现31的次幂取模的答案,所以如果一段太长肯定不如拆成2段。首先如果一段长度为7,那么无论他的开头是a,eh,n的谁,都有val>31^6887503…

0基础学习VR全景平台篇第29章:场景功能-音乐解说

本期为大家带来蛙色VR平台,场景管理模块-音乐功能! 功能位置示意 一、本功能将用在哪里? 优秀VR全景作品不仅注重视觉的体验,接入契合场景的背景音乐与解说; 可将音乐与解说进行全局播放或进行分场景播放&#xff0…

前端学习--Vue(4) 生命周期

一、组件的生命周期 一个组件从创建-运行-销毁的真个阶段,强调的是一个时间段 1.1 生命周期函数 1.1.1 创建 (只执行一次) created() 阶段任务:最早可以使用methods中的方法发起ajax请求获取数据,并将数据挂载到d…

论文阅读笔记(三)——有监督解耦+信息瓶颈

论文信息 《Disentangled Information Bottleneck》 论文地址:https://ojs.aaai.org/index.php/AAAI/article/view/17120 代码地址:GitHub - PanZiqiAI/disentangled-information-bottleneck inproceedings{pan2021disentangled, title{Disentangled in…

vue3与vue2共存环境搭建

1、全局安装vue2 npm install vue-cli -g2、自行在任意位置创建一个文件夹,局部安装vue3 npm初始化 npm initnpm初始化 提示: 初始化后 出现文件package.json 如果没有初始化 会报错,且文件夹中不会新增内容 3、局部安装vue3 npm install …

一名优秀的黑客,具备的有哪些特质

想要成为网络hacker黑客?十个必会的特质 一、基本的计算机知识 把它列为第一条,相信很多人肯定会觉得不以为然,其实掌握必要的计算机知识对黑客入门非常重要。这些包括:计算机硬件的组成、操作系统的安装、Windows批处理命令、命…

LeetCode_DFS_困难_1377.T 秒后青蛙的位置

目录 1.题目2.思路3.代码实现(Java) 1.题目 给你一棵由 n 个顶点组成的无向树,顶点编号从 1 到 n。青蛙从 顶点 1 开始起跳。规则如下: 在一秒内,青蛙从它所在的当前顶点跳到另一个未访问过的顶点(如果它…

apt remove purge的区别 删除包的同时删除配置文件

1、apt remove purge的区别 查看 man apt apt remove:删除软件包,不删除配置文件。这么做的目的是将来再次安装这个包时 原来的配置文件会自动加载供使用。也可以避免误删除包,配置文件还在的话,重新安装一次软件包就可以恢复到…

亚马逊云科技出海日6月9日盛夏盛启

向全球价值链上游奋进 中国企业增强国际竞争力的关键,是努力朝全球价值链上游奋进,发力技术出海。中国的出海新机遇,背后曾是疫情在全球按下数字互联和数字化升级的快进键,跨境电商、在线社交、移动支付、数字服务等数字经济迎来…

Spring 学习总结(37)—— 了解什么是单体的模块化,Spring Modulith 入门实践

1、介绍 模块化单体是一种架构风格,代码是根据模块的概念构成的。 对于许多组织而言,模块化单体可能是一个很好的选择。 它有助于保持一定程度的独立性,这有助于我们在需要的时候轻松过渡到微服务架构。Spring Modulith 是 Spring 的一个实验项目,可用于构建模块化单体应用…

《消息队列高手课》课程笔记(一)

消息生态系统全景图 为什么需要消息队列? 异步处理 大多数程序员在面试中,应该都问过或被问过一个经典却没有标准答案的问题:如何设计一个秒杀系统? 这个问题可以有一百个版本的合理答案,但大多数答案中都离不开消息…

马蹄集oj赛(第五次)

目录 围栏木桩 某农场有一个由按编号排列的根木桩构成的首尾不相连的围栏。现要在这个围栏中选取一些木桩,按照原有的编号次序排列之后,这些木桩高度成一个升序序列。 大厨小码哥 附庸的附庸 最长子段和 旅费 纸带 暧昧团 上楼梯 上楼梯2 采蜜 围栏…

Spring 学习总结(36)—— Spring 状态机优雅实践

1、什么是状态机 1.1 什么是状态 先来解释什么是“状态”( State )。现实事物是有不同状态的,例如一个自动门,就有 open 和 closed 两种状态。我们通常所说的状态机是有限状态机,也就是被描述的事物的状态的数量是有限个,例如自动门的状态就是两个 open 和 closed 。 状…

Mybatisplus真实高效批量插入附容错机制

文章目录 概要优化技术细节小结 概要 提示:mybatisplus自带真实批量插入 在mybatisplus已知常用批量插入为继承Iservice里的saveBatch方法和saveOrUpdateBatch方法, 进入源码可知,此两种方法的插入均为单条插入,如图: 其中可看出&#xff0…