从零开始搭建一个简单的ui自动化测试框架02(pytest+selenium+allure)

简介: 二、先搭一个架子在我还是小白连py语法都不太熟悉的时候,经常在网上看关于自学ui自动化测试的博客,最熟悉的套路莫过于先给你介绍一下selenium的各个api,然后写一套代码去登陆微博或者百度什么的,但我今天不愿意这么写,因为这样的话,实际上并没有什么卵用,他不能用到实际的项目里,今天我们来先搭一个架子。

二、先搭一个架子

在我还是小白连py语法都不太熟悉的时候,经常在网上看关于自学ui自动化测试的博客,最熟悉的套路莫过于先给你介绍一下selenium的各个api,然后写一套代码去登陆微博或者百度什么的,但我今天不愿意这么写,因为这样的话,实际上并没有什么卵用,他不能用到实际的项目里,今天我们来先搭一个架子。

搭架子先画图

我们首先来确定一下我们的项目架构图,也即是我们打算怎么具体设计我们的项目,下面来聊一聊我设计时的思路。

其他的先不谈,测试用例肯定是集中放到一个地方的,于是我创建了一个testcase的位置专门用来放用例,此时我们的架构图是这样的:
—————testcase

接下来我又想到,我们的用例可能需要按照要求集合执行,所以我又创建了一个testsuite的位置专门放集合的用例,于是架构图多了一个:
—————testcase
—————testsuite

然后又想到,因为我们的测试用例需要支持单独执行,所以必然需要重复的测试前和测试后的动作,先不谈更多的动作,但是打开和关闭浏览器肯定是必须的,所以要想不在每个case里重复的写这些动作,我们就需要一个测试用例的主类用以被case继承,我把这个主类单独的放置到了一个位置maincase,于是架构图:
—————testcase
—————testsuite
—————maincase

我们再来想一下case里更具体的问题吧,比如说,我们可能需要一个(除开浏览器操作外的)工具集用以对case提供支持,包括发送Email,打开windows窗口选择文件还有其他可能遇到的奇奇怪怪的事情,我们给这个部分留了一个util的位置,再来看看架构图:
—————testcase
—————testsuite
—————maincase
—————util

再想想,如果我们发送email,那当然是要先生成测试报告,测试里遇到问题的话,最好可以有截图用来看看当时为什么出错了,那么我们各留一个位置给报告和截图:
—————testcase
—————testsuite
—————maincase
—————util
—————testreport
—————sreenshot

接下来,处理一下我们的元素存放位置,元素的管理是UI自动化里的重要点,如果不做到case和元素分离的话,维护用例将会变得非常困难,每次迭代只要元素变动了,你就得一个一个case的改,这里我们把元素集中到一个config里,稍后在具体编写阶段告诉大家如何存储,这里先分一个config的位置给元素:
—————testcase
—————testsuite
—————maincase
—————util
—————testreport
—————sreenshot
—————config

最后,如果我们希望我们的用例足够简洁的话,我们就应该把那些常用的操作封装起来,这里的封装分为两个层面封装,第一是对常用基础操作的封装,第二是对常用业务操作的封装。

解释一下的话,就是我们首先把基础的操作封装到一起,例如,寻找元素,如果我们想统一使用隐式等待(不明白的话后续篇章会介绍到)去查找元素的话,就需要把selenium里的find方法封装一下,这种是对原先的基础操作的封装;
而比如说,我们写case的时候发现,很多个case都会有一个同样的跳转路径,都是通过点击xx,再点击xx到达这个页面,我们就把这个操作路径封装了给我们的case使用,避免case里重复的写这些路径,这层封装是对复用性高的业务逻辑操作的封装。

我们给这两层封装留个位置operate:

—————testcase
—————testsuite
—————maincase
—————util
—————testreport
—————sreenshot
—————config
—————operate

这样目前来看,我们的架构图大体就画完了,剩下的如果有遗漏再开发过程里修复吧,我们看看最终的项目架构(目前还是空的):

img_628a4d64ad5a5764b4c224e5dc673da9.png
image

目录
相关文章
|
13天前
|
数据采集 测试技术 Python
自动化淘宝秒杀:使用Selenium WebDriver的实战指南
本文详细介绍了如何利用Selenium WebDriver自动化淘宝秒杀操作,包括环境配置、代码实现及注意事项,旨在帮助读者提升秒杀成功率,同时提醒合理使用以遵守平台规则。
58 8
|
16天前
|
设计模式 前端开发 JavaScript
自动化测试框架设计原则与最佳实践####
本文深入探讨了构建高效、可维护的自动化测试框架的核心原则与策略,旨在为软件测试工程师提供一套系统性的方法指南。通过分析常见误区,结合行业案例,阐述了如何根据项目特性定制自动化策略,优化测试流程,提升测试覆盖率与执行效率。 ####
41 6
|
22天前
|
机器学习/深度学习 前端开发 测试技术
探索软件测试中的自动化测试框架选择与优化策略####
本文深入探讨了在当前软件开发生命周期中,自动化测试框架的选择对于提升测试效率、保障产品质量的重要性。通过分析市场上主流的自动化测试工具,如Selenium、Appium、Jest等,结合具体项目需求,提出了一套系统化的选型与优化策略。文章首先概述了自动化测试的基本原理及其在现代软件开发中的角色变迁,随后详细对比了各主流框架的功能特点、适用场景及优缺点,最后基于实际案例,阐述了如何根据项目特性量身定制自动化测试解决方案,并给出了持续集成/持续部署(CI/CD)环境下的最佳实践建议。 --- ####
|
22天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
66 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
2天前
|
测试技术 持续交付 数据安全/隐私保护
软件测试的艺术与科学:探索自动化测试框架
在软件开发的世界中,测试是确保产品质量的关键环节。本文将深入探讨自动化测试框架的重要性和实现方法,旨在为读者揭示如何通过自动化测试提升软件测试效率和准确性。我们将从测试的基本概念出发,逐步引导读者了解自动化测试框架的设计和实施过程,以及如何选择合适的工具来支持测试活动。文章不仅提供理论知识,还将分享实用的代码示例,帮助读者将理论应用于实践。无论你是测试新手还是经验丰富的开发者,这篇文章都将为你打开一扇通往更高效、更可靠软件测试的大门。
|
5天前
|
Java 测试技术 API
软件测试中的自动化测试框架选择与应用##
在快速迭代的软件开发周期中,选择合适的自动化测试框架对于提高软件质量和开发效率至关重要。本文探讨了当前流行的几种自动化测试框架的特点和适用场景,旨在为软件开发团队提供决策依据。 ##
|
1月前
|
监控 安全 jenkins
探索软件测试的奥秘:自动化测试框架的搭建与实践
【10月更文挑战第24天】在软件开发的海洋里,测试是确保航行安全的灯塔。本文将带领读者揭开软件测试的神秘面纱,深入探讨如何从零开始搭建一个自动化测试框架,并配以代码示例。我们将一起航行在自动化测试的浪潮之上,体验从理论到实践的转变,最终达到提高测试效率和质量的彼岸。
|
27天前
|
Web App开发 设计模式 JavaScript
自动化测试之美:如何利用Selenium实现Web应用的高效测试
【10月更文挑战第29天】在软件开发的世界中,测试是确保产品质量的关键步骤。本文将带你了解如何使用Selenium这一强大的自动化测试工具,提高Web应用测试的效率和准确性。通过实际案例,我们将探索Selenium的核心功能及其在现代软件开发中的应用,旨在帮助读者掌握自动化测试的精髓,从而提升软件测试工作的整体效能。
30 0
|
17天前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
2月前
|
开发框架 JavaScript 前端开发
鸿蒙NEXT开发声明式UI是咋回事?
【10月更文挑战第15天】鸿蒙NEXT的声明式UI基于ArkTS,提供高效简洁的开发体验。ArkTS扩展了TypeScript,支持声明式UI描述、自定义组件及状态管理。ArkUI框架则提供了丰富的组件、布局计算和动画能力。开发者仅需关注数据变化,UI将自动更新,简化了开发流程。此外,其前后端分层设计与编译时优化确保了高性能运行,利于生态发展。通过组件创建、状态管理和渲染控制等方式,开发者能快速构建高质量的鸿蒙应用。
122 3