Web自动化测试【分层架构设计与实现】一:总纲及数据驱动层

备注:这是笔记,不是经验!

一、通用分层框架结构示意:

Web自动化测试【分层架构设计与实现】一:总纲及数据驱动层_第1张图片

其核心思想是把写在一个测试用例里的业务进行分层拆解,把不同的数据类型、业务模型进行分离,降低业务与数据间的耦合度,提高测试脚本的可维护性。上面的框架图中,把不同功能模块、业务数据都进行了分离,好处是当测试需求有变化时,始终只需改动特定模块内部的代码;例如,如果页面元素定位变了,只需修改定位符驱动层的数据即可;又如,某个页面元素的等待需要延时,只需在页面操作层添加延时语句即可。下面逐一熟悉框架的逻辑与模块的关联;

1.数据驱动层

测试数据驱动层主要用来提供测试数据的独立存储。具体的数据可以来自文本文件(如:TXT、XML等),也可来自数据库(如:MySQL、SQLite等)下面简单阐述一下数据驱动层的设计与使用方法。下面分文件存储、数据库存储依次说明;

1.1 文件存储

文件存储即把测试数据直接放在独立的文本文档中,如:TXT文件、CSV文件、XML文件、JSON文件等;因为我使用python,所以存储文件直接就是Python文件(其优点:不用再对数据文件进行解析);当然,若数据驱动层对测试数据的管理有其它要求的情况下,况下,则可以根据具体的需求来选择最合适的方式;

举例:将下面的一个访问百度查询一个关键词的用例,使用数据驱动层进行拆分;

driver.get("https://www.baidu.com/")
driver.find_element_by_id("kw").send_keys("屮艸芔茻")

可以看出,属于可拆分的数据包括:https://www.baidu.com    、    屮艸芔茻    

好,现在就截图进行解释:

Web自动化测试【分层架构设计与实现】一:总纲及数据驱动层_第2张图片

在需要使用时,引入独立出来的python文件;get("关键字")的方式获取具体数据。

Web自动化测试【分层架构设计与实现】一:总纲及数据驱动层_第3张图片

1.2数据库存储

数据库存储就是将测试数据直接存储在数据库中,其更方便于对数据的管理和设计;缺点是,需要做额外的事情来支持,如:数据库安装、数据库驱动的安装、数据库读取代码的编写、测试数据获取方法的封装等。

这次简单介绍从0到从数据库中获取测试数据;下面是系列步骤:

步骤1:MySQL数据库安装链接:https://blog.csdn.net/ak739105231/article/details/102487921详细的关于数据库的安装步骤;

步骤2:安装python的MySQL驱动;python3支持PyMySQL;

pip3 install PyMySQL

Web自动化测试【分层架构设计与实现】一:总纲及数据驱动层_第4张图片

Web自动化测试【分层架构设计与实现】一:总纲及数据驱动层_第5张图片

步骤3:数据库读取代码编写(关于pymysql的基本了解:https://blog.csdn.net/ak739105231/article/details/90749719)

Web自动化测试【分层架构设计与实现】一:总纲及数据驱动层_第6张图片

接下来,就是可以将这段代码封装到DataPool类的方法中,具体代码如下:

Web自动化测试【分层架构设计与实现】一:总纲及数据驱动层_第7张图片

步骤4:在Navcat数据库管理管理工具上,连接本地MySQL,完成测试数据表的设计

CREATE TABLE `test_case` (
`id`  int(255) NOT NULL ,
`modle`  varchar(255) NULL ,
`test_case`  varchar(255) NULL COMMENT '测试用例名称' ,
`name`  varchar(255) NULL COMMENT '测试数据名' ,
`value`  varchar(255) NOT NULL COMMENT '测试数据的值' ,
`desc`  varchar(255) NULL DEFAULT NULL COMMENT '测试数据的描述' ,
`result`  text NULL COMMENT '对应的测试期望结果' ,
`status`  enum('inactive','active') NULL DEFAULT 'active' COMMENT '数据是否有效' ,
`createAt`  date NULL DEFAULT NULL COMMENT '创建日期' ,
PRIMARY KEY (`id`),
UNIQUE INDEX `test_case` (`test_case`) 
)
;

创建后,在Navcat工具上,可以看到:

Web自动化测试【分层架构设计与实现】一:总纲及数据驱动层_第8张图片

步骤5:更加步骤3的代码,进一步封装,完成测试数据获取方法封装;

Web自动化测试【分层架构设计与实现】一:总纲及数据驱动层_第9张图片

步骤6:在数据库表中,准备好需要用的数据

Web自动化测试【分层架构设计与实现】一:总纲及数据驱动层_第10张图片

步骤7:测试数据层的引入与使用

Web自动化测试【分层架构设计与实现】一:总纲及数据驱动层_第11张图片

总的来说,关于对测试数据的管理可以使用最简单的文本方式来存储,也可以使用数据库来存储。文本文档,更简洁、更容易,但是不利于统一管理。数据库的方式保证测试数据的统一性,更方便管理;

总之,这两种方式,都可以选择,我个人觉得,如果项目较为复杂,推荐数据库存储方式,方便管理。

定位符驱动层:https://blog.csdn.net/ak739105231/article/details/102517323

页面操作层:https://blog.csdn.net/ak739105231/article/details/102544527

结果驱动层:https://blog.csdn.net/ak739105231/article/details/102602516

你可能感兴趣的:(自动化测试,python,#)