# 框架总体步骤及所有内容
在开始之前,请让我先声明几点:

这个 “从 0 开始” 并不是说你不需要任何基础知识,而是指框架从无到有的过程,要开始搭建还是需要一定基础
请确保你已经掌握了基本的 Python 语法
如果你要搭建 UI 框架,请确保你已经掌握了 Selenium 的基本用法
这个框架主要面向刚刚会写脚本但是不知道该如何走向下一步的同学,欢迎吐槽,但最好带上改进建议
思考:我们需要一个什么样的框架
既然要搭一个框架,我们首先得弄明白我们需要一个什么样的框架,这个框架要支持什么功能?

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

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

日志以及报告
日志级别、URL、浏览器类型等基本配置
参数化
公共方法
搭建框架目录结构
现在我们很容易就把框架的结构搭建好了:

Test_framework
|--config(配置文件)
|--data(数据文件)
|--drivers(驱动)
|--log(日志)
|--report(报告)
|--test(测试用例)
|--utils(公共方法)
|--ReadMe.md(加个说明性的文件,告诉团队成员框架需要的环境以及用法)
也可以参照这篇目录结构,都是类似的:简单分享一个轻量级自动化测试框架目录结构设计

接下来有一些选择题要做了:

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

Selenium 3 刚发布正式版不久,一些功能 driver 还没来得及跟上,尤其是 geckodriver,所以选择 Selenium 2(注意 PY3 的话要选择 SE2.53.1)。

环境选择其实影响不大,你也可以选择你自己习惯的环境。

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

鉴于我之前写过一篇 yaml 的博文,我们这里就用 yaml 吧。

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

# 简单的了解框架后,可以按如下1>11步骤搭建自己的框架了。

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

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

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

4.然后是生成 HTML 测试报告,这个博主修改了网上原有的 HTMLTestRunner,改为中文并美化,然后修改其支持 PY3。你可以直接拿去用。——怎样从 0 开始搭建一个测试框架(4)

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

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

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)

整个流程下来我们一个简单的框架就像模像样了,在此基础上可继续完善,实际用在项目中也没有什么问题,再简单结合 Jenkins 部署起来,定期或每次代码提交后可自动运行测试,直接把测试报告发送到项目成员手中,妥妥的!接下来就跟我一块学习吧。

所有的代码我都放到了 公众号 和 头条号,请搜索(软件测试资源站
关注后回复关键词【资料包】获得下载链接后自己下载学习。
有什么好的建议或者问题,可以留言或者加 QQ 群: 330374464


↙↙↙阅读原文可查看相关链接,并与作者交流