Python自动化测试框架到底是个什么东西?

127 阅读9分钟

企业中,自动化必定会演变成搭建测试框架,这是为什么呢?
可能有一些刚刚进入软件测试行业的朋友还不理解什么是测试框架,没关系,首先我们知道一点,为什么自动化会演变成搭建测试框架呢?

第一个
因为自动化肯定是一个团队在做,而不是你一个人在做,所以团队在做自动化会给企业项目带来很大的收益。
如果大家对测试框架不了解的朋友,其实如果你去面试自动化测试工程师,很多人就会有一个疑问,假设我现在是一个面试官,我问你一个问题:你能不能搭建测试框架
如果是你,能不能针对这个问题聊一聊呢?其实这个问题疑问,你会不会自动化,有没有经验,肯定一问便知。大型招聘网站上岗位职责会不会有要求能独立搭建自动化测试框架?
也许你可能会一点Python脚本,会一点selenium,会一点点这个编程,但是总之这个框架的部分,大家可能还很模糊。有些朋友可能说这个搭建测试框架到底是什么玩意儿?
那我们今天就来好好理解什么是搭建自动化测试测试框架,然后如何从零开始搭建。
那么在搭建测试框架之前,我们可以了解一些最简单的概念。

01.主流测试框架原理解析

什么叫做测试框架?
首先框架分为几种,框架分为技术框架和自己搭建测试框架。

第三方技术框架:

下面这些就是做过自动化的朋友所熟悉的,根据不同的产品模型有很多种:

web的DOM元素自动捕获识别,windows的窗体识别,基于图像识别airtest
web自动化主流框架:selenium,robotframework,macaca
移动端自动化主流框架: appium,macaca,uiautomator2,robotframework
接口自动化测试框架: request,HttpClient,httprunner,robotframework
(其实在做自动化测试,框架从来不缺,非常多的框架,一大把,甚至平时会有很多朋友给我后台留言,你会不会这个框架那个框架之类,有一些不是当下企业主流常用的。其实所有的测试框架归根结底,你如果用多了它们之间都是相通的)

**友情提示:**如果是小白同学,selenium是什么,或者Python最基本的环境搭建还不会的,建议可以阅读我之前写的其他基础一些的文章,自动化基本的一些知识。也有视频教程免费领取,愿你我相遇,皆有所获!有了一定基础再来阅读这一篇文章,可能对自动化会有一个新的认识。

我们接着讲,这个自动化测试框架,首先Web端的像这个问题,你在面试过程中肯定会说到,我之前在工作中做自动化我会用到selenium、robotframework或者用macaca等等,是如何用selenium+Python+unittest+一些数据驱动等等,如何来做的。
然后有移动端的,最主流的我都写在了第一个,比如移动端的就是appium,它可以说是做app自动化的鼻祖,随着技术的更新uiautomator2是Python的一个内置库,然后像robotframework也是通过二次封装也是可以做app自动化的测试框架。
所以你去应聘自动化测试工程师,面试官问你任何类型的自动化,你都要马上能够想到很多方案,比如说我是用什么框架,如何去做。
基于以上非常好用,主流第三方开源的测试框架,根据这些代码分层、模块思想去搭建一个测试框架。

自主搭建测试框架:

框架帮助我们编写更加简单而且好维护的自动化用例,
让我们把主要精力放在测试用例的设计上,
需要把—些额外的东西抽象出来,封装起来,
一套好的测试框架,可以让团队其他同事不需要有很强的代码基础,就能编写自动化测试用例,维护测试用例,执行自动化用例,利于团队协作,起到提质保效的作用。

02.搭建测试框架前的准备与思路

我们做事情,做自动化也不要盲目的去做
1.请确保你已经掌握了一门编程语言的基本的语法
2.开源测试框架的基本用法
3.如果你要搭建Ul框架,请确保你已经掌握了Selenium的基本用法(常用的点击,输入,等待,滑动,获取属性,鼠标键盘,用例断言)
4.如果你要搭建接口框架,请确保你已经掌握了接口测试(session)和request基本用法(get,headers,session,断言)

在搭建之前,我们来看一个最简单的脚本,我们先从UI自动化开始。
比如公司会有各种系统,后台管理系统,前端一些用户交互的系统,像这一类管理系统大多数以Web端的为主,这一类后台系统大部分功能你就可以用自动化来实现,用UI自动化来保证后台管理系统它的最基本的功能和它主要的核心业务、大面积的回归测试、用自动化脚本。
我这里就写了一个最简单的脚本

运行之后它就会帮我们自动去登录,打开浏览器然后输入文本,输入用户名密码,点击登录。
这个是最简单的send_keys,click。
其实如果我们真正的在企业中做自动化,就需要来考虑很多问题了,前面这个是脚本,我们现在要来搭建自动化测试框架,所以脚本形成框架之前我们是不是要考虑很多问题。
比如说:

1.脚本的运行环境(linux,windows)
⒉.配置文件(环境:测试,预发布,正式。数据库数据:用户名密码)
不是说所有人都有这个权限,拿到正式环境,拿到预发布环境,数据库的账户和密码的,所以这些东西需要放到配置文件里面去。
3.初始化浏览器(类型:谷歌/火狐模式:本地/linux/docker/无头模式/浏览器常用操作)
4.Po模式
5.log日志
6.报告系统
7.数据驱动
8.关键字驱动
还有十几条……

所以最基本的,我们先考虑好这些问题,那么我们一步一步来。
比如说我在配置文件里面,随便改一个配置,它就会到另外一个环境运行了

比如说像这种域名,肯定很多地方用得到,如果你需要写死在脚本里面是不大现实的。
数据库的用户名和密码你不能写在脚本里面,都是非常敏感性的东西,很多都可以想到配置文件里面。
大家用很多的开源框架,应该也感受到好用的东西它肯定会有一个配置文件,开发也是一样,比如说上线了需要跑一个什么脚本,是不是也经常去改配置文件,运维也是一样的,如果要去发布东西了,他也会经常去改配置文件,而不是一些真正的代码。
那我们测试也是一样的啊,你要来运行这个自动化测试,自动化很多东西需要用配置文件来操控它,这是一个思想

比如说我们的pytest,那这也是一个框架,好用!它也有一个配置文件。
这个脚本自身的一些因素我们就不说了,比如说脚本需要优化的地方
脚本优化:没有等待时间,定位元素稳定,unittest/pytest组织用例,复用性,断言
所以我们简单的脚本,根本不算是自动化,这可以理解成你在功能测试点点点一样的。这无非是用脚本代替我们去做一些操作,但是像这样的脚本,真正的做自动化肯定不是这样的脚本,你如果来写这样的脚本,纯属你的个人爱好,或者是以个人兴趣在玩。你真正的去面试自动化,面试官也不会问你输入文本用什么方法,怎么去定位的,怎么去点击的,面试自动化测试工程师这些不在范围之类。面试官会默认你会了,这些是最基本的东西。

接下来,我们来做封装。

第一步我们就要考虑的点,刚刚所说的配置文件,我们就要管理好到底做什么东西。
我们在目录下面新建一个文件夹,比如说config,里面可以包含很多很多东西。(不仅可以放base.Yaml,可以放用例,用例之间的关联)比如说我们刚刚很多的一个配置,这里我建议大家用一个Yaml文件。不管是可读性还是好用性都是非常好的。
比如base,一些最基础的数据,base.Yaml,

根据前面说到要考虑的东西

如果没有理解可以公众号程序员一凡主页点击领取资料,免费获取本章视频教程。

看懂了?之前有没有思考过这个问题?你可能写脚本最多用一个unittest运行前面的一个脚本,其实真正一个团队在做自动化测试,用这个方法很难管理的,不是你一个人在做,如果想做自动化测试团队的核心人物,这些问题都是需要去思考的。

配置文件为什么会存在,存在的意义,了解了之后,我们再去读取配置文件。
#在Python里面非常简单,
import yaml 导入
#然后我们就可以来写一个类
class config:
#比如这个类里面是专门读取配置文件,我们也命名为config
def __init__( self):
#我们写一个初始化方法
读取yaml文件在Python里面,会用到一个上下文管理器
#with 就说说它会自动化去打开而且关闭

以及docker容器技术玩法

独立搭建docker容器+git+Jenkins自动化分布式测试

一系列的细节,文字表述可能有点长,可以直接去观看录制好的视频教程。

愿你我相遇,皆有所获!