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

在开始之前,请让我先声明几点:

  1. 这个“从0开始”并不是说你不需要任何基础知识,而是指框架从无到有的过程,要开始搭建还是需要一定基础
  2. 请确保你已经掌握了基本的Python语法
  3. 如果你要搭建UI框架,请确保你已经掌握了Selenium的基本用法
  4. 这个框架主要面向刚刚会写脚本但是不知道该如何走向下一步的同学,欢迎吐槽,但最好带上改进建议

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

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

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

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

  1. 日志以及报告
  2. 日志级别、URL、浏览器类型等基本配置
  3. 参数化
  4. 公共方法

搭建框架目录结构

现在我们很容易就把框架的结构搭建好了:

Test_framework|--config(配置文件)|--data(数据文件)|--drivers(驱动)|--log(日志)|--report(报告)|--test(测试用例)|--utils(公共方法)|--ReadMe.md(加个说明性的文件,告诉团队成员框架需要的环境以及用法)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

也可以参照这篇目录结构,都是类似的:简单分享一个轻量级自动化测试框架目录结构设计

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

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. 首先我们要把配置抽出来,用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 部署起来,定期或每次代码提交后可自动运行测试,直接把测试报告发送到项目成员手中,妥妥的!接下来就跟我一块学习吧。

所有的代码我都放到了GITHUB上【点我传送】,可以自己下载去学习,有什么好的建议或者问题,可以留言或者加我的QQ群:455478219【点击加群】讨论。

怎样从0开始搭建一个测试框架_0相关推荐

  1. 怎样从0开始搭建一个测试框架_1

    这一步我们用到了selenium的基本的知识,以及一些unittest和PyYaml库的内容,有问题的同学可以参考我之前的博客: Python Selenium自动化测试详解 Python必会的单元测 ...

  2. 怎样从0开始搭建一个测试框架_10——数据生成器(全网最全)

    有时候接口或UI上传入的数据需要符合指定的格式,我们在参数化的过程中又不愿意在excel中一遍遍去构造这样的数据,这时我们可以加入生成器来为我们产生符合某些固定格式的数据. 这里我推荐一个挺有意思的库 ...

  3. 如何搭建一个Spring框架超详细

    如何搭建一个Spring框架,首先我们要先了解Spring的核心构成部分 1.Spring 的构成 IOC 控制反转 spring 框架最核心的部分 DAO spring 对 访问数据库的支持 MVC ...

  4. 从 0 开始搭建一个技术博客,私藏干货~

    2019独角兽企业重金招聘Python工程师标准>>> 技术博客的选型有很多种,如:博客园.CSDN.开源中国.简书.知乎等--都可以用来写文章,形成自己的技术博客. 上面的博客都是 ...

  5. 手把手教你从0开始搭建一个vue项目(完结)

    前言 上一节webpack实战之(手把手教你从0开始搭建一个vue项目)最后我们完成了css样式的配置: webpack.config.js: const path = require("p ...

  6. 【前端】搭建一个VUE框架

    大伙好,最近狠狠焦虑了,因为想搞前端技术岗找暑假实习担心自己能力不够,还是希望如果有同学大学期间就决定毕业找工作的话,一定要抓住机会大学期间狠狠锻炼本领噢,不要虚度光阴 说了点题外话,回到正题,焦虑的 ...

  7. 从零开始搭建一个测试技术练习平台

    工作中,要不断学习,为了快速上手,我打算写一个有增删改查功能的Javaweb项目,方便以后练习各种测试技术. 环境准备 1.准备一台电脑 2.官网下载最新版Intellij IDEA,破解步骤找&qu ...

  8. 从0开始搭建Web自动化测试框架

    前言: 测试框架的设计有两种思路,一种是自底向上,从脚本逐步演变完善成框架,这种适合新手了解框架的演变过程.另一种则是自顶向下,直接设计框架结构和选取各种问题的解决方案,这种适合有较多框架事件经验的人 ...

  9. 不会数据驱动?还不快来看看,教你快速搭建数据驱动测试框架

    导语 说到数据驱动自动化测试,你会不会有这样的疑问:数据怎么管理?数据怎么才能驱动测试用例执行?到底怎么样才算数据驱动?那么本篇文章就教你如何进行数据驱动测试,相信你一定能对数据驱动自动化测试有一个不 ...

最新文章

  1. linux+向进城发送信号,信号 - it610.com
  2. 如何使一维数组一行一行的输出成二维数组的格式
  3. java中Class对象详解
  4. php: eclipse 编辑 php
  5. java 获取叶子节点_java – 如何获取树的所有叶节点?
  6. Julia : |>的用法及多参数下的使用
  7. 数学建模之lingo使用
  8. 教育部更新学科目录!考研(与在读)的同学都需要知道!
  9. 毕设格式 页眉页脚 如何设置(WPS)
  10. 【渝粤题库】广东开放大学 企业财务报表分析 形成性考核
  11. 第三阶段应用层——1.2 数码相册—字符编码
  12. MySQL 字符串和数值比较、字符串与字符串比较
  13. 著名Wiki站点一览
  14. Python faker模块
  15. @Cacheable和@CacheEvict的学习使用
  16. 学习 Elasticsearch 的相关使用
  17. 入职两年涨薪3K被拒,平时好脸给多了?转身立马裸辞走人...
  18. 网络层(4.网际控制报文协议)
  19. CentOS 8.2云服务器定时运行脚本
  20. FaceLandmark dataset Augment

热门文章

  1. Jenkins构建自动化脚本执行无界面解决方法
  2. testng入门教程5TestNG套件测试
  3. 【读书笔记-数据挖掘概念与技术】分类:高级方法
  4. [置顶] Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite...
  5. [ZZ88]送给即将毕业奔三的男人们的16条忠告
  6. STM32的RTC简单操作
  7. autoencoder
  8. oracle adg的特点是什么,Oracle12c ADG新特性
  9. C++ Primer 5th笔记(chap 17 标准库特殊设施)tuple 类型
  10. MIMIC 以太坊医疗项目开发(3)nodejs安装