天天看点

怎样从0开始搭建一个测试框架_0——总章

一、搭建框架的准备

1、这个“从0开始”并不是说你不需要任何基础知识,而是指框架从无到有的过程,要开始搭建还是需要一定基础

2、请确保你已经掌握了基本的Python语法

3、如果你要搭建UI框架,请确保你已经掌握了Selenium的基本用法

二、思考:我们需要一个什么样的框架

既然要搭一个框架,我们首先得弄明白我们需要一个什么样的框架,这个框架要支持什么功能?

框架主要的作用就是帮助我们编写更加简单而且好维护的用例,让我们把主要精力放在测试用例的设计上,那么我们就需要把所有额外的东西抽象出来作为框架的部分。

那么,额外的东西是什么?

1、 日志以及报告

2、日志级别、URL、浏览器类型等基本配置

3、参数化

4、 公共方法

三、搭建框架目录结构

搭建的框架大致如下,关于框架的解释说明请看:

Test_framework

    |--config(配置文件)

    |--data(数据文件)

    |--drivers(驱动)

    |--log(日志)

    |--report(报告)

    |--test(测试用例)

    |--utils(公共方法)

    |--ReadMe.md(加个说明性的文件,告诉团队成员框架需要的环境以及用法)      

简单介绍一下:

1、config层,放配置文件,把所有的项目相关的配置均放到这里,用Python支持较好的配置文件格式如ini或yaml等进行配置。实现配置与代码分离。

2、data层,放数据文件,可以把所有的testcase的参数化相关的文件放到这里,一般可采用xlsx、csv、xml等格式。实现数据与代码分离。

3、drivers层,放所需的驱动,如Chromedriver、IEDriverServer等。

4、log层,所有生成的日志均存放在这里,可将日志分类,如运行时日志test log,错误日志error log等。

5、report层,放程序运行生成的报告,一般可有html报告、excel报告等。

6、test层,放所有测试相关的文件,如case——测试用例、common——项目相关的抽象通用代码、page——页面类(Page-Object思想)、suite——组织的测试套件。

7、 utils层,所有的支撑代码都在这里,包括读取config的类、写log的类、读取excel、xml的类、生成报告的类(如HTMLTestRunner)、数据库连接、发送邮件等类和方法,都在这里。

四、Python 2 or 3? Selenium 2 or 3?

1、Python 3的使用越来越多,而且3的unittest中带有subTest,能够通过子用例实现参数化。而用2的话需要unittest2或其他的库来实现,所以我们这里选用Python 3。

2、Selenium我用的版本是:

jinjideleishen:~ leiyuxing$ pip show selenium

Name: selenium

Version: 3.141.0      

五、配置文件

配置文件我们有多种选择:ini、yaml、xml、properties、txt、py等,这里我们选择yaml。

所以我们在config文件夹里创建config.yml文件,在utils里创建一个config.py文件读取配置,内容暂且不管。

六、简单地对之后的内容勾画一下

1、我与以往的博主不同,我首先是建立好HTML的报告模版,这个博主修改了网上原有的HTMLTestRunner,改为中文并美化,然后修改其支持PY3。你可以直接拿去用。——​​怎样从0开始搭建一个测试框架_1——HTMLTestRunner报告​​

2、然后我们要把配置抽出来,用yaml文件放配置。所以我们要在config层添加配置文件config.yml,在utils层添加file_reader.py与config.py来管理。——​​怎样从0开始搭建一个测试框架_2——配置​​

3、然后我们将python自带的logging模块封装了一下,从配置文件读取并设置固定的logger。在utils中创建了log.py。——​​怎样从0开始搭建一个测试框架_3——日志​​

4、然后封装xlrd模块,读取excel,实现用例的参数化。——​​怎样从0开始搭建一个测试框架_4——参数化​​

5、然后我们给框架添加了发送邮件报告的能力。在utils中添加了mail.py。——​​怎样从0开始搭建一个测试框架_5——邮件​​

6、然后我们将测试用例用Page-Object思想进行封装,进一步划分test层的子层。——​​怎样从0开始搭建一个测试框架_6——PageObject​​

7、接下来为了接口测试封装client类。在utils中添加了client.py。——​​怎样从0开始搭建一个测试框架_7——接口​​

8、然后添加了一个简单的自定义断言,在utils中添加assertion.py,可用同样的方法自行扩展。——​​怎样从0开始搭建一个测试框架_8——断言​​

9、接下来我们为了抽取响应结果,用JMESPath封装Extractor,在utils中添加extractor.py。——​​怎样从0开始搭建一个测试框架_9——抽取器​​

10、然后是生成器。为我们自动生成固定类型的测试数据。utils下创建了generator.py。——​​怎样从0开始搭建一个测试框架_10——数据生成器(全网最全)​​

11、接着为了一些项目中的支持方法,如加密、签名、排序等,创建支持库support.py。——​​怎样从0开始搭建一个测试框架_11——支持方法​​

12、然后针对一些特殊的接口做一个方法的封装,接口测试时,除了常见的http接口,还有一种比较多见,就是socket接口,我们可以用Python自带的socket库进行socket接口测试。——​​怎样从0开始搭建一个测试框架_12——socket接口测试​​