百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

利用Python框架unittest做自动化测试,学习了!

off999 2024-11-03 14:14 30 浏览 0 评论


RF 的全称是 RobotFramework,它是第三方的框架,使用它必须先安装。RF 框架的优点在于对编程新手比较友好,支持关键字驱动。

RF 框架通常的适用场景是用一位有编程功力的自动化工程师搭建好框架,封装好常用的关键字,然后由不同的功能业务部门的测试人员调用关键字进行自动化测试脚本的编写。编写人员可以对编程没什么基础甚至零基础,因为调用的固定功能都已经封装好了。所以,对于编程新手而已,这个框架更像一个工具,我们往里面堆砌步骤就可以完成。

如果有想学习python的同学,可以私信小编“01”获取python学习资料,更好的学习python!


但是对于有编程基础的同学来说,一昧的调用关键字对我们的技术没有太大的提升,Python 入门了后,我们就要拿来用了,语言本来就是工具,多用用才能更加熟练。所以,今天我想分享的框架是 Python 自带的 unittest 框架,这个框架扩展性也比较强,可以做 Web 和 APP 的自动化,扩展性强。

搭建环境

刚说过,unittest 框架是 Python 自带的,所以只要你安装了 Python,在编辑器中直接调用即可,非常方便。

框架结构

导入包后直接就能用了,再用这个框架之前我们先看看它的结构。



我们举一个小栗子吧,我们写两条测试案例:

1、我们打开百度,输入一个词 Python,点击查询,验证页面元素;

2、输入 Go,点击查询,验证页面元素。

测试类继承

我们先新建自己的测试类,新建的测试类继承 unittest 中的 TestCase 类,这样我们就能继承 TestCase 类中的方法了。

结构分析

接着我们看到类下面有一些固定结构,这些固定结构我称它为「瞻前顾后」,这里我把这个词当褒义词来用,为什么这么说呢,我们一一来看。

setUpClass 方法

这个方法的作用写在所以案例运行前要做的工作,比如上面举的例子中,所有案例运行前需要准备的工作是什么?那就是打开浏览器,输入百度网址。

那我们就可以把这个前期工作放在这个方法里面,有一点需要注意下,这个方法必须要用上 classmethod 装饰器,不加上会报错,至于这个装饰器什么作用,这里暂时不做分析。如果你还不懂什么是装饰器,可以看看我之前分享过的一篇文章 Python装饰器

开始敲代码,开始工作我做了三件事:定义一个驱动、打开一个地址、浏览器窗口最大化。



setUp 方法

这个方法名称看起来和上面的差不多,其实功能也是差不多,也是准备工作,它的作用是每条案例运行前做的工作。还是上面的例子,每条案例运行前我希望先清空输入框里面的文本,再输入我想输入的文本。不然当我第一次输入 Python 后,再输入 Go 时,如果不清空的话,第二次输入框的文本就是 PythonGo 了。

开始敲代码,例子中这一步比较简单了,用 clear 方法清空输入框,一行代码搞定。



测试案例

准备工作做好后,我们就可以大干一场写测试案例了。一个方法就是一条案例,方法名称需要注意下,一定要以 test 开头。unittest 框架运行时会去方法里识别 test 开头的方法并运行。

例子中两条案例比较简单,通过 id 去定位输入框然后输入文本,再通过 id 定位查询按钮并点击。



案例中我用了 assertIn 方法来断言页面元素,校验文字「百度为您找到相关结果约」是否存在当前页面的源码中,page_source 是来获取当前页面源码的。

这样,例子中的两条案例就完成了。

tearDown 方法

既然有案例开始前做准备工作的方法,对应也有每条测试案例执行结束后的方法,就是 tearDown 方法。当然,我的例子中没用上这个方法,这个方法就不用写了。所以,这些方法根据自己的需求调用就好,属于框架封装好的一部分。

tearDownClass 方法

tearDownClass 方法和上面的 setUpClass 方法相呼应,它是在所有案例执行结束后做的工作,例子中的工作就是退出浏览器。当然,这个和 setUpClass 方法也是一样,必须要调用 classmethod 装饰器才能使用。



最后,我们运行所有案例就行。




运行效果图如下:



运行特定案例

还有一种情景,假如我写了两套环境的案例,我现在只想运行其中一个环境的案例,比如例子中,我只想运行 test1 案例,这是我们需要创建一个测试套件 Suite,把需要执行的案例放进套件,用 TextTestRunner 运行套件里的案例。



运行时我们发现只运行 test1 案例。

当然我们还有一种方法,就是把不想运行运行的方法前加上 @unittest.skip(),这时这条案例会无条件的跳过,不执行。skip 也可以加入判断条件 @unittest.skipIf(reason),reason 条件为真时,这条案例跳过执行。

测试报告

上面案例执行完成后,我们发现报告信息太过简单。



能生成生动一点的报告吗?有的,我们需要下载一个 HTMLTestRunner 的 py 文件,我用的 Python3,所以我下载是 HTMLTestRunner 对应的版本是和 Python 相关的,需要的在我公众号里 回复「框架」获取。

下载后放在 Python 安装根目录下,在编辑器中导入。

import HTMLTestRunner

然后调用 HTMLTestRunner 方法生成报告,报告没有指定保存目录的话就默认保存在代码的同一路径下。



这里我把两条案例都加到 test_suite 里面了,我们打开报告看看。



细心的读者应该发现了,上面两条案例点击查询按钮后,我设置了等待时间,防止页面元素还没有完全加载出来而导致断言失败。这种加 sleep 强制等待时间的方法在实际项目中是不可取的,因为每次执行时的加载的时间可能不同,强制时间太长的话太浪费时间,太短的话又怕加载时间不够。所以,我们得有一个智能等待的方法,这就要用到显式等待和隐式等待的方法。

还有,当我们测试案例基本类似的时候,发现代码差不多,比如登录功能,我们设计了好几条案例,这时我们会用到数据驱动的思想,从 EXCEL 文件中读取数据,循环执行。

上面说的两个知识点后续会慢慢给大家分享,今天重点分享了 unittest 这个框架的基本用法,下次我们在慢慢唠。

相关推荐

网络电视在线观看高清(网络电视在线电视直播大全)

如果网站已建好,可以嵌套一些现成的加密sdk小程序,实现对视频的保护,防止下载、恶意传播、播放等;1做防盗链处理,防止下载;2视频加密sdk,对视频本身进行加密处理,即使被下载,也无法播放!;3...

cad提供的激活码16组(autocad2014永久激活码16个)

1.断开网络,拔除网线或禁用网卡;2.安装时输入序列号“666-69696969”,产品密钥“001H1”;3.安装完毕后启动AutoCAD2017,点击“激活”,然后选择“使用脱机方法申请激活码...

163com免费邮箱(163邮箱网页版入口)

163邮箱官网首页入口为http://mail.163.com/网易163免费邮箱--中文邮箱第一品牌.容量自动翻倍,支持50兆附件,免费开通手机号码邮箱赠送3G超大附件服务.支持各种客户端软件收发,...

三国老款经典单机游戏(老版的三国单机游戏)

《三国战记》;《三国群英传》;《三国志》;《三国杀》。游戏介绍:《三国战记》:《三国战纪:风云再起》游戏背景为东汉末年,异象四起:连年天灾、作物欠收、民不聊生,连带影响税收。以张角为首的黄...

视频转换器哪个好(视频转换器排行榜)

建议使用狸窝转换器,它功能齐全,界面简洁,体积小,速度快。嗨格式视频转换器是一款非常实用的视频文件转换工具,它可以将各种视频格式之间进行转换,例如将MP4、AVI、MOV等视频格式转换成其他常见的视频...

自动算税软件(自动算税软件怎么用)
自动算税软件(自动算税软件怎么用)

1、首先,打开手机,找到appstore,在appstore内输入个人所得税。点击获取之后会在页面底部出现如下弹框,点击安装。2、之后会出现如下弹框,显示获取个人所得税app需要进行一个简短的验证才可以,点击继续按钮。在输入框内输入上面...

2026-01-18 18:03 off999

农场类模拟经营游戏(一款很老的农场游戏)

个人觉得《真实模拟农场3D》好玩!这是一款以经营农场为主题的模拟类游戏,你会马上成为一个农场主人。负责一块开阔农场的日常运营,把自己的农场运作的蒸蒸日上,成为最富有的农场主。玩家可以驾驶拖拉机,收割机...

手机腾讯游戏中心(手机腾讯游戏中心在哪)
  • 手机腾讯游戏中心(手机腾讯游戏中心在哪)
  • 手机腾讯游戏中心(手机腾讯游戏中心在哪)
  • 手机腾讯游戏中心(手机腾讯游戏中心在哪)
  • 手机腾讯游戏中心(手机腾讯游戏中心在哪)
做图片的软件(做图片的软件app)
做图片的软件(做图片的软件app)

有手机版的p图大神可以制作好玩的图片此软件专门进行图片恶搞的,手机用美图秀秀,电脑上用ps推荐7个冷门APP吧,以上APP都是朋友推荐或自己无意间发现的,如有雷同,纯属意外。1.马卡龙玩图:马卡龙玩图是一款非常有趣的修图APP,强大的抠图功...

2026-01-18 17:15 off999

德国vs日本视频直播(德国vs日本视频直播回放)
德国vs日本视频直播(德国vs日本视频直播回放)

世界杯直播德国与日本的比赛是在北京时间的11月23日21点这个时间段举行,这场比赛在卡塔尔世时间则是为16:00点。历史上德国和日本曾经有过2次交手,在2004年12月(日本0-3德国)和2006年5月(德国2-2日本)两队分别进行过2场友...

2026-01-18 17:03 off999

卡牌类手游排行榜第一名(卡牌类手游排行榜第一名是谁)

阴阳师忘川风华录神将三国姬斗无双天地劫:幽成再临月圆之夜阿比斯之旅黑潮之上山海镜花斗罗大陆:武魂觉醒以下是一拳超人手游中常见的卡牌排名:S级卡牌:1.一拳超人(变身)2.童帝(变身)3.杰诺斯A...

英雄联盟手游内测申请(英雄联盟手游内测申请地址)

要申请英雄联盟手游内测资格,您需要先安装好游戏并创建账号。然后根据游戏官方发布的内测申请指南,在指定时间内填写相应的申请表格。一般来说,申请表格会要求您填写以下信息:1.基本个人信息:包括姓名、年龄...

金色影视影视剧(金色影视 tv)

电影《金色池塘》拍摄地是英国南部新汉普郡。《金色池塘》是由马克·雷戴尔执导,凯瑟琳·赫本、亨利·方达等主演的剧情片。该片根据欧内斯特·汤普森的同名戏剧改编而成,讲述了年老的诺曼与女儿之间出现了感情危机...

下载全民k歌免费安装(找回《全民k歌》)

打开全民k歌网页版,打开想要下载的歌曲按F12,点击Network的选项,再按ctrl+R找到里面最大的文件,右键openlinkinnewtab新的页面中右键另存为,就可以下载了1.确保您的手机支...

oa软件排行榜前十名(oa软件下载)

OA办公软件有很多,例如泛微、致远、蓝凌、华天动力、索昂、通达、飞企、微宏、万户、金和、今目标、协众、云之家、泛普、明道、天翎、手册类、安创安全OA、小熊OA等相对大型企业来说,中小型企业的管理规范...

取消回复欢迎 发表评论: