Python自动化测试框架我到底应该学哪一个?

news2024/11/27 8:45:45

企业中,自动化必定会演变成搭建测试框架,这是为什么呢?

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

第一个

因为自动化肯定是一个团队在做,而不是你一个人在做,所以团队在做自动化会给企业项目带来很大的收益。

如果大家对测试框架不了解的朋友,其实如果你去面试自动化测试工程师,很多人就会有一个疑问,假设我现在是一个面试官,我问你一个问题:你能不能搭建测试框架?

如果是你,能不能针对这个问题聊一聊呢?其实这个问题疑问,你会不会自动化,有没有经验,肯定一问便知。大型招聘网站上岗位职责会不会有要求能独立搭建自动化测试框架?

也许你可能会一点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自动化分布式测试

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/651008.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ribbon和 Nacos服务注册中心

✅作者简介:大家好,我是Cisyam,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Cisyam-Shark的博客 💞当前专栏: 微服务探索之旅 ✨特色专…

软件测试面试自己都不上心,就不要抱怨别人对你冷眼旁观

昨日表哥恳请帮他的学生投递一下开发岗的简历,举手之劳,这忙必须得帮。但当发来学生的简历后,我吐槽了“这简历平平无奇,没有任何亮点,如何令人另眼相看?”表哥说,学生经历不多,总不…

离散数学题目收集整理练习(期末过关进度20%)

✨博主:命运之光 🦄专栏:离散数学考前复习(知识点题) 🍓专栏:概率论期末速成(一套卷) 🐳专栏:数字电路考前复习 ✨博主的其他文章:点击…

一文看懂什么是广告联盟,未来可期吗?

日常学习一些行业内的相关基础知识,可以在工作中更好地理解业务。在互联网广告行业中,广告联盟是很重要的存在,我们今天一起来了解下什么是广告联盟吧。 文中GG联盟广告联盟 GG广告 一. 定义 GG联盟通指网络GG联盟,指集合中小网…

【链表复习】C++ 链表复习及题目解析 (3)

目录 剑指offer 中的链表题目 JZ6 从尾到头打印链表 JZ18 删除链表的结点 JZ24 反转链表 JZ25 合并两个排序的链表 JZ52 两个链表的第一个公共结点 JZ23 链表中环的入口结点 JZ22 链表中倒数第k 个结点 JZ35 复杂链表的复制 JZ76 删除链表中重复的结点 本次给大家带来…

用注解实现方法开关

一、自定义注解的基本使用 java.lang.annotation 提供了四种元注解,专门注解其他的注解(在自定义注解的时候,需要使用到元注解): Documented – 注解是否将包含在JavaDoc中 Retention – 什么时候使用该注解 Target –…

【算法】动态规划-斐波那契模型

文章目录 结论斐波那契模型第 N 个泰波那契数三步问题使用最小花费爬楼梯**方法1:**以i位置为结尾....方法2:以i位置为起点.... 解码方法 结论 对于线性dp,一般是用经验题目要求来定义状态表示: 以某个位置为结尾…以某个位置为…

React 通过一个输入内容加入列表案例熟悉 Hook 基本使用

我们创建一个react项目 在src下创建components文件夹 在下面创建一个index.jsx index.jsx 参考代码如下 import React, { useState } from "react";const useInputValue (initialValue) > {const [value,setValue] useState(initialValue);return {value,onCha…

【2023,学点儿新Java-01】从查看本机 jdk版本 开始 | Java基础全程脉络图、Java工程师全程技术路线、Java职业晋升路线图

一个人把生命耗尽,应该是为了一些美好的东西,值得的东西,用蓬勃如烈火的生命力 去战胜一个又一个人生的悲剧,这本身就是人生的意义之一吧! 🎯作者主页: 追光者♂🔥 🌸个人…

Win10 系统专业版远程桌面如何才能多用户同时登录使用?

环境: Win10专业版19041 RDPWrap-v1.6.2 dell5493笔记本 问题描述: Win10 系统专业版远程桌面如何才能多用户同时登录使用? 解决方案: 安装RDPWrap 1.关闭remote desktop services服务 安装RDP之前,要先关闭re…

8年性能测试工程师告诉你,压力测试详解,如何做压力测试...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 什么是压力测试&a…

灯塔工厂PLC智慧边缘计算机嵌入式linux系统

随着工业物联网的发展,越来越多的企业开始将工业自动化设备接入到物联网平台,以实现设备远程监控、运维和管理。其中,PLC智能网关作为连接PLC和物联网平台的重要设备,发挥着至关重要的作用。本文将介绍PLC数据采集控制网关的功能和…

文心一言 VS 讯飞星火 VS chatgpt (42)-- 算法导论5.4 6题

六、假设将n个球投人 n 个箱子里,其中每次投球独立,并且每个球等可能落入任何箱子。空箱子的数目期望是多少?正好有一个球的箱子的数目期望是多少? 文心一言: 这是一个典型的概率问题。首先,我们可以通过简单的计算来理解问题…

【论文】YOLOv7运行train.py和test.py时,打印不出来计算量GFLOPs解决方法

目录 前提案例解决步骤运行方式打印效果 前提 我在AutoDL云服务器上,会运行失败,不晓得为啥,我感觉可能是CUDA版本的问题,CUDA版本低了就会没有那么深的计算量吧 AutoDL上(显卡RTX3090,4GB)安…

java的网络编程

一、网络编程的三要素 IP、端口号、协议。 特殊IP地址127.0.0.1,也可以是localhost,是回送地址也称回环地址,也称本机IP,永远只会寻找当前所在本机。 常见cmd命令: ipconfig:查看本机IP地址; ping:检查网络…

Innovus: dbGet 快速学习教程

dbGet是innovus/encounter工具自带的"database access command"命令中的一部分,它几乎可以用来获取设计相关的一切信息。 输入dbGet 按[Tab]键,能看到三个选项,分别是head / top /selected。这三个选项所代表的意义如下: head --…

ubuntu 22.04安装mysql 8.0与避坑指南

MySQL 是一个开源数据库管理系统,可作为流行的 LAMP(Linux、Apache、MySQL、PHP/Python/Perl)堆栈的一部分安装。 它实现了关系模型并使用结构化查询语言( SQL)来管理其数据。 本教程将介绍如何在 Ubuntu 22.04 服务器…

appium+python在Android端的环境配置

一、安装配置JDK 一、安装环境 1、本机系统:Windows 10(64位) 2、JDK版本:1.8(64位) 二、下载安装 1、JDK和JRE简介 Java环境分JDK和JRE ,JDK就是Java Development Kit。简单的说JDK是面向…

JMeter安装图文及入门教程,(附视频教程)

目录 一、JMeter介绍 二、下载配置安装 三、JMeter入门压测实例 总结: 一、JMeter介绍 JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。它可以用于测试静…

Go语言并发之context标准库

1、Go语言并发之context标准库 Go中的 goroutine 之间没有父与子的关系,也就没有所谓子进程退出后的通知机制,多个 goroutine 都是平行地 被调度,多个 goroutine 如何协作工作涉及通信、同步、通知和退出四个方面。 通信:chan 通…