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

简介: 一、 思想先行在我们讨论如何用技术手段实现之前,不妨先思考一下,或者说,如同普通的项目开发一样,首先是产品经理给出规划,再由技术实现。既然是个人的项目,那当然是我们自己来做这个产品经理了,那么首先,我们的产品需要哪些点呢?ui自动化,是测试层级的最上层,本质上是在容器里模拟用户的操作,来达到自动回归业务逻辑的目的。

一、 思想先行

在我们讨论如何用技术手段实现之前,不妨先思考一下,或者说,如同普通的项目开发一样,首先是产品经理给出规划,再由技术实现。
既然是个人的项目,那当然是我们自己来做这个产品经理了,那么首先,我们的产品需要哪些点呢?
ui自动化,是测试层级的最上层,本质上是在容器里模拟用户的操作,来达到自动回归业务逻辑的目的。这样的话,就很容易想到了,如果我们想要实现这个目的,首先,

  1. 我们的产品要能够根据用例规定的操作回放模拟操作;
  2. 用例应该是既能够单独执行,也可以按指定顺序集合执行;
  3. 如果希望达到无人值守的目的,那么邮件通知和CI必不可少;
  4. 我们肯定希望用例维护起来简洁便利。

其他可能没想到的做的过程里添加,但是以上四点基本就可以满足我们对简单的ui自动化测试的需求了,接下来我们就可以考虑如何去实现这个产品。

首先是技术的选型,在大脑由混沌状态逐渐清晰了我们的产品需求之后,我们就可以对市面上的技术进行选择,选择一个最合适我们的方向。

一般而言,肯定第一优先本公司的主流语言,另一方面,经过调查,目前来说已经可以确定只能用selenium来实现我们的“模拟回放”的需求,这是因为他是开源而免费的,其他的工具例如QTP尽管更加易用且有专门的公司维护,但是,他太贵了(并不考虑盗版&破解)。

selenium可以理解为一个工具集,包括IDE、Grid、RC(selenium 1.0)、WebDriver等,经常有人问selenium和webdriver是什么关系?这里稍微解释一下,可以视为selenium打包了webdriver,而webdriver本身是一套操作浏览器的api协议规范。实际用的话,可以不纠结于概念。

selenium本身支持多种语言,由于本家公司主流技术是php,不被支持,权衡之下选择了py作为开发语言,理由是py更加易于上手,现成的库很多很方便。

到这里,其实我们的第一需求,还记得吗?(我们的产品要能够根据用例规定的操作回放模拟操作;)已经确认了技术类型,我们接着看下面的需求。

第二个需求,实际上就是用例管理,一般而言各个语言都有自己的测试框架用于处理这些,python当然也不例外,py上的测试框架有unittest,pytest,nose等等,由于我们的需求各个框架基本都能满足,所以直接选择了py内置的测试框架unittest使用,如果想了解各大框架之间对比的话,可以点击这里查看。

ok,很顺利,到这里第二个需求也解决了技术选择,那么看看第三个需求,也就是无人值守。这里因为我们公司的ci工具是jenkins,所以就直接选定了用jenkins作为技术手段。

那么只剩下最后一个需求,实际上是一个很重要的优化点,如何让用例维护简单?这里其实是一个很弹性的选择,我的选择是只通过框架设计来达到,更好的选择是把用例的描述规范化甚至脱离代码层面,例如使用yaml来描述用例。

至此,我们的技术选型已经全部完毕,接下来是开始设计我们的测试框架。

目录
相关文章
|
2天前
|
Web App开发 敏捷开发 数据管理
自动化测试框架的设计与实现
【9月更文挑战第32天】在软件开发的海洋中,自动化测试如同一艘精确导航的船只,确保我们的应用程序能够在波涛汹涌的技术潮流中稳健航行。本文将带你领略自动化测试框架的设计之美,从搭建基础到功能扩展,再到维护实践,我们将一起探索如何打造一个既高效又灵活的自动化测试体系。
|
8天前
|
敏捷开发 Java 测试技术
自动化测试框架的选择与应用
【9月更文挑战第26天】在软件开发的海洋里,自动化测试是那一盏指路明灯。它不仅加快了开发周期,还提升了软件质量。本文将带你探索自动化测试框架的世界,了解它们的核心特性、适用场景及如何根据项目需求做出明智选择。让我们一起启航,找到那把打开高效、稳定软件生产大门的钥匙。
|
9天前
|
敏捷开发 数据管理 测试技术
自动化测试框架的设计与实现
【9月更文挑战第25天】 本文将引导读者深入理解自动化测试框架的核心概念,并展示如何从零开始构建一个简单且有效的自动化测试框架。通过通俗易懂的语言和实际代码示例,我们将探讨测试框架设计的关键步骤、实现方法以及常见问题的解决方案。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和启示。
|
11天前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
|
9天前
|
设计模式 测试技术 持续交付
自动化测试框架的设计与实现
【9月更文挑战第25天】本文旨在探讨如何设计并实现一个高效、可扩展的自动化测试框架,以提升软件测试的效率和质量。通过分析当前流行的测试框架特点,结合最佳实践,提出一套完整的解决方案。文章不仅涵盖框架设计的理论依据,还包括具体实现步骤和示例,帮助读者深入理解自动化测试框架的搭建过程。
|
29天前
|
运维 Ubuntu Devops
自动化运维工具的魅力:Ansible入门
【9月更文挑战第5天】在快速变化的IT世界里,自动化运维不再是可选项,而是必需品。Ansible,一款简单却强大的自动化工具,正成为众多DevOps工程师的首选。本文将带你了解Ansible的基本概念、安装步骤以及如何编写简单的Playbook,从而开启你的自动化之旅。
67 36
|
6天前
|
机器学习/深度学习 运维 Cloud Native
构建高效运维体系:从自动化到智能化的演进之路
在当今数字化时代,运维作为信息技术的重要支柱,其效率与创新能力直接关系到企业信息系统的稳定性和业务连续性。本文将探讨如何通过技术手段,实现运维从传统手工操作向自动化、智能化的转变,进而构建一个高效、可靠的运维体系。我们将从自动化工具的应用开始,逐步深入到智能运维的实践,最终展望云原生架构下的运维未来趋势。
|
9天前
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进之路
在当今数字化时代,运维作为保障企业IT系统稳定运行的关键环节,正经历着前所未有的变革。本文将探讨如何通过实施自动化和引入智能化技术,构建一个更加高效、可靠的运维体系,以应对日益复杂的业务需求和技术挑战。
21 1
|
26天前
|
存储 弹性计算 运维
自动化监控和响应ECS系统事件
阿里云提供的ECS系统事件用于记录云资源信息,如实例启停、到期通知等。为实现自动化运维,如故障处理与动态调度,可使用云助手插件`ecs-tool-event`。该插件定时获取并转化ECS事件为日志存储,便于监控与响应,无需额外开发,适用于大规模集群管理。详情及示例可见链接文档。
|
20天前
|
机器学习/深度学习 运维 安全
构建高效运维体系:从自动化到智能化的演进之路
在数字化转型的浪潮中,运维管理作为信息技术基础设施的重要支柱,正经历着从传统手工操作向自动化、智能化的深刻变革。本文将探讨如何通过引入自动化工具和平台,实现运维流程的标准化与效率提升;进而利用大数据分析和人工智能技术,迈向预测性维护和智能决策支持的高级阶段。通过案例分析,揭示成功转型的关键因素,为运维专业人士提供一套可借鉴的升级路径。
下一篇
无影云桌面