Python自动化测试(超详细~)

news2024/11/30 10:53:22

1. 概述

1.1 python自动化

什么是python自动化?我理解的Python自动化测试就是把以前人为测试转化为机器测试的一种过程。自动化测试是一种比手工测试更快获得故障反馈的方法。

自动化测试是一种质量保障的方式,最重要的还是以做好一款高质量产品为前提。测试工作很多时候就是在不断平衡质量、效率、驱动业务这三者之间的比例和深度。根据不同的业务阶段、不同的目标、当前的关键事件驱动,在质量、效率、驱动业务上不断地调整策略和战术。

同时,我也为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接点击文末小卡片免费领取资料文档

软件测试视频教程观看处:

字节大佬教你逼自己如何在15天内掌握自动化测试(接口自动化/APP自动化/Web自动化/性能测试),内含项目实战

1.2 邮件推送

在python自动化测试人员完成项目的自动化测试工作之后,需要将自动化测试报告结果发送给对应的负责人查看。如果每次执行完自动化测试之后都需要测试人员手动将测试报告转发给负责人,如果在转交的过程中发生点突发事件,测试人员忘记要将测试报告转发给负责人,负责人就会迟迟收不到想要的工作内容,这样的效率对于从事软件行业的人们来说效率是很低的。因此由生出python自动化邮件推送这个功能。

邮件传输一般是通过SMTP协议,SMTP协议是一组由源地址到目的地址传输邮件的规则。在python中通过smtplib模块对SMTP协议进行简单的封装,实现了方便的途径来发送邮件,通过SMTP的sendmail方法来发送邮件。这是一种比较通用的邮件传输方法,不过本次我给大家介绍的是unittestreport包中封装的一个邮件推送方法。这个邮件推送方法相对于传统的方法来说,更加的简洁、易懂,适用于使用unittest测试框架的脚本。通过使用python自动化邮件推送功能,就能在自动化测试结果生成之后自动邮件发送到对应负责人的邮箱之中,提高了工作效率。

1.3 企业微信推送

什么是企业微信推送呢?企业微信推送就是自动化测试人员在进行完自动化测试工作之后将测试结果信息推送到自己工作所在的企业微信测试群中,让相关人员看到项目自动化测试的执行情况,这也是一种及时将自动化测试结果共享的一种方法。

1.4 Jenkins自动化部署

什么是Jenkins呢?Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

那什么是Jenkins自动化部署呢?由于自动化测试工作的特性就是在每次版本迭代时对系统功能进行自动化测试,从而找出系统在版本迭代过程汇中可能出现的问题,这种工作具有很强的重复性。如果每次版本迭代都需要测试人员手动执行自动化脚本,对于从事软件行业工作的我们来说并不是一件很酷的事情,而且还很繁琐。由于Jenkins的作用就是用于监控持续重复的工作,所以我们将完成后的自动化测试脚本部署到Jenkins上,并设置好相应的定时器,Jenkins就能按照规定好的程序、时间来自动执行我们的自动化测试脚本,从而提高测试人员的工作效率。

2、项目实现

2.1 python脚本

本次介绍的是基于SaaS后台管理平台账号的增删改查功能所编写的自动化测试脚本。脚本所使用的python框架是unittest框架,ui元素定位都使用的是Xpath方法。然后通过unittestreport包中的邮件推送和企业微信推送方法来便捷的实现测试报告自动推送到负责人邮箱和对应的企业微信群中。下面将详细介绍脚本实现方法:

在Pycharm编译器中创建一个.py文件,然后在py文件的最开始处导入我们脚本需要使用的文件包。由于我们的自动化测试是基于selenium框架的,并且使用的是UI元素定位方法,因此我们需要导入selenium包。使用的自动化框架是unittest,所以导入unittest包。在自动化脚本运行时,我们需要使得脚本在运行过程中有所停顿以便于观察,所以要导入time包。

将调用浏览器驱动、最大化浏览器、隐式等待和打开测试网址放在setup函数之中,由于setup函数的功能是在调用每一个新函数时都会执行一次,若使用该函数,会导致脚本元素定位的逻辑出现问题,从而导致脚本运行失败。所以我们需要的是在自动化脚本运行前调用一次setup函数即可,因此我们使用的是setUpClass函数,该函数在整个自动化脚本运行过程中只会运行一次,符合我们的预期。但又因为setUpClass函数是一个类函数,若我们将其写在一个类中,也会导致脚本运行错误,因此我们需要在函数前面添加一个@classmethod,来申明这个是一个类函数。同理在脚本运行结束之后,我们需要将自动打开的网页进行关闭,这个关闭网页的功能,我们就写在了tearDownClass类函数中。

接着我们对SaaS登录页面进行代码编写,因为我们采用的是unittest框架,因此创建的场景函数要以test开头,登录界面的函数就为test_01_login。然后通过UI元素定位来实现登录自动化,后面的增删改查环境代码编写也是如此,在这就不一一赘述。

2.2 运行脚本

SaaS后台管理的自动化脚本编写完成之后,我们需要编写一个执行此脚本的运行文件,该文件我们称之为runner文件。因为我们是基于unittest框架编写的自动化脚本,为了便捷并生成界面好看的自动化测试报告,我们在这里选用了unittestreport这个数据包,这里面封装了多个好看的测试报告模板功测试人员选择。


为了辨别生成的测试报告的版本,我们通过time.strftime()方法来给测试报告添加时间戳。然后定义个suite套件用于临时存储我们所有的测试场景脚本。那我们该如何获取之前写的那些场景脚本呢?一种方法是将之前写好的场景脚本的py文件通过import导入到当前文件中来,不过这种办法比较笨重,如果py文件很多的话,我们的工作效率就会变得很低下。所以在这我们介绍另外一种方法,就是通过
unittest.defaultTestLoader.discover()方法读取我们文件所在的位置。如果脚本是在本地运行,我们可以导入脚本的绝对路径,但是如果我们要求脚本在别的环境中也能运行,那就不能读取脚本的绝对路径了,而是改为相对路径。因为我们后面还需要将脚本部署到gitlab中,所以在此我们写的就是读取脚本的相对路径。

怎么生成好看的自动化测试报告呢?接下来我们就要用到unittestreport中的TestRunner()方法了。unittestreport将python中的TestRunner()方法进行了重新编写并封装,我们只需要调用其的TestRunner()即可使用。TestRunner()中的各个参数解释在代码中都有注释,在此就不一一赘述。

模板参数填写完之后,通过使用runner.run()调用run方法执行当前脚本就可以生成我们需要的自动化测试报告了。

3、总结

PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助,有需要的朋友你可以dd我。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近100个G。

☑ 240集-零基础到精通全套视频课程
☑ [课件+源码]-完整配套的教程
☑ 18套-测试实战项目源码
☑ 37套-测试工具软件包
☑ 268道-真实面试题
☑ 200个模板-面试简历模板、测试方案模板、软件测试报告模板、测试分析模版、测试计划模板、性能测试报告、性能测试报告、性能测试脚本用例模板(信息完整)

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

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

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

相关文章

商用柴油车J1939油耗管理及北斗TBOX在物流运输中的应用

随着电商的兴起,网上购物的用户越来越多,网购、直播带货、精品电商等,促进了大量的物品流动,原本在一定程度上,物流管理上还有一些小混乱,但是随着监管和政策调整,物流互联数字平台对于货物流动…

deepstream6.2部署yolov5详细教程与代码解读

文章目录 引言一.环境安装1、yolov5环境安装2、deepstream环境安装 二、源码文件说明三.wts与cfg生成1、获得wts与cfg2、修改wts 四.libnvdsinfer_custom_impl_Yolo.so库生成五.修改配置文件六.运行demo 引言 DeepStream 是使用开源 GStreamer 框架构建的优化图形架构&#xf…

SAP FI之批量修改财务凭证的BAPI

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 一般涉及修改财务凭证,或者其它凭证,不应直接更新数据库,而是使用系统提供的function module,或者BAPI,或者使用BDC。 一、 示例&#xf…

《Effective STL》读书笔记(四):迭代器

iterator 优先于 const_iterator, reverse_iterator, const_reverse_iterator STL中所有标准容器都提供了标题提到的四种迭代器类型。对于容器container<T>而言&#xff0c;iterator类型相当于T*&#xff0c;const_iterator类型相当于const T*&#xff0c;剩下两个是反向…

XP小皮面板中的Mysql启动就停止,本地Mysql无法启动解决方法

前言&#xff1a; XP小皮面板中的mysql启动就停止&#xff0c;尝试查看很多方法无效&#xff0c;任务管理器mysql也尝试了先终止后启动&#xff0c;没反应... 解决方法 打开CMD&#xff0c;输入命令行 sc delete Mysql 这个命令是删除本地Mysql服务 然后再点开小皮的…

数学计算式转为表达式树

数据结构“栈”的一个用途就是&#xff1a;平衡符号&#xff0c;比如这样一个代数式&#xff1a;&#xff08;a(bc)*a(e*fa*(cd))&#xff09;,你能一眼看出这个式子的括号是否正确吗&#xff1f; 更何况还可以加入中括号&#xff08;[]&#xff09;,大括号&#xff08;{}&…

harmony应用签名

1. 随便搞个halloworld程序 2.生成私匙与证书请求文件 我就是key store file选择了一个文件夹&#xff0c;又不给任何提示&#xff0c;等我输入密码时才提示 填写图中内容即可&#xff0c;图中未填项可不填 点击完成即可

CPSE深圳充换电展开幕,飞凌嵌入式引领智能充储技术新潮流

9月6日&#xff0c;2023第六届深圳国际充电桩及换电站展览会&#xff08;简称&#xff1a;CPSE深圳充换电展&#xff09;在深圳会展中心&#xff08;福田&#xff09;开幕&#xff0c;飞凌嵌入式如期亮相&#xff0c;与来自全国的客户朋友及合作伙伴一同交流分享企业在智能充电…

WebDAV之π-Disk派盘 + 天悦日记

天悦日记是一款清爽简约的日记记录工具,通过天悦日记app随时随地快速写日记,更有智能数据统计分析报表,多端同步多种备份,本地备份和基于WebDAV协议的云端备份。跨平台使用,支持多设备、多平台无差别使用。天悦日记将每一天经历都清晰记录在手机,一目了然知道曾经的经历,…

StarRocks数据库FE——Catalog层

​仓外挂湖是指以 MPP 数据库为基础&#xff0c;使用可插拔架构&#xff0c;通过开放接口对接外部存储实现统一存储&#xff0c;在存储底层共享一份数据&#xff0c;计算、存储完全分离&#xff0c;实现从强管理到兼容开放存储和多引擎。实现方向为增加存储能力&#xff0c;提升…

Blender之锁定摄像机到视图方位

文章目录 当你在blender 中时&#xff0c;想要让你的摄像机跟随你的视图方位&#xff0c;以方便你的后期的制作&#xff0c;那应该怎么半&#xff1f; 先点击摄像机的图标&#xff0c;进入摄像机视图 然后按一下键盘的N 键&#xff0c;进入编辑模式&#xff0c;选择视图 最后…

【笔试强训选择题】Day34.习题(错题)解析

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;笔试强训选择题 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;&#xff…

蓝天转债,双良转债上市价格预测

蓝天转债111017 基本信息 转债名称&#xff1a;蓝天转债&#xff0c;评级&#xff1a;AA&#xff0c;发行规模&#xff1a;8.7亿元。 正股名称&#xff1a;蓝天燃气&#xff0c;今日收盘价&#xff1a;9.74元&#xff0c;转股价格&#xff1a;10.13元。 当前转股价值 转债面值…

阿里巴巴API接口解析,实现获得商品详情

要解析阿里巴巴API接口并实现获取商品详情&#xff0c;你需要按照以下步骤进行操作&#xff1a; 了解阿里巴巴开放平台&#xff1a;访问阿里巴巴开放平台&#xff0c;并了解相关的API文档、开发者指南和规定。注册开发者账号&#xff1a;在阿里巴巴开放平台上注册一个开发者账…

【Unity编辑器扩展】| Inspector监视器面板扩展

前言【Unity编辑器扩展】| Inspector监视器面板扩展一、ContextMenu和ContextMenuItem二、Custom Editors 自定义编辑器三、Property Drawer 属性绘制器总结前言 前面我们介绍了Unity中编辑器扩展的一些基本概念及基础知识,还有编辑器扩展中用到的相关特性Attribute介绍。后面…

C高级文件相关指令

使用cut截取出Ubuntu用户的家目录&#xff0c;要求:不能使用“&#xff1a;”作为分隔 XMind

嵌入式Linux驱动开发(LCD屏幕专题)(三)

1. 硬件相关的操作 LCD驱动程序的核心就是&#xff1a; 分配fb_info设置fb_info注册fb_info硬件相关的设置 硬件相关的设置又可以分为3部分&#xff1a; 引脚设置时钟设置LCD控制器设置 2. 在设备树里指定LCD参数 framebuffer-mylcd {compatible "100ask,lcd_drv&qu…

E. Nastya and Potions

Problem - E - Codeforces 思路&#xff1a;想到用图论前驱图了&#xff0c;但是因为考虑可能有环的存在&#xff0c;但是其实题干中说明了不能通过一种或几种混合得到自己&#xff0c;所以就保证了不存在环&#xff0c;那就能用拓扑结构的性质做&#xff0c;用记忆化搜索就可以…

DHCP的interface(接口),global(全局)配置以及DHCP relay(中继),DHCP snooping,DHCP option

目录 1.DHCP的接口&#xff08;interface&#xff09;配置 2.DHCP的全局&#xff08;global&#xff09;配置 3.dhcp relay 4.dhcp snooping 5.option 这里有一个简单的拓扑图 交换机配置命令如下 The device is running!<Huawei> <Huawei>sys Enter system …

go语言基本操作---五

error接口的使用 Go语言引入了一个关于错误处理的标准模式&#xff0c;即error接口&#xff0c;它是Go语言内建的接口类型 type error interface {Error() string }package mainimport ("errors""fmt" )type Student struct {name stringid int }func …