Unittest框架及自动化测试实现流程

🍅 视频学习:文末有免费的配套视频可观看

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

Unittest框架介绍

Unittest框架是Python中一个标准的库中的一个模块,该模块包括许多的类如 test case类、test suit类、texttest runner类、texttest result类、test loader类。 

test case类的话一个test case 就是一个测试用例,一个测试用例包含一个完成的流程,包括setup()表示初始化用例,run()表示运行,teardown表示还原测试场景。

Test suit类在自动化中往往一个场景需要编写一个或者多个测试用例,那么就需要把这些多个用例一起执行,这时候需要把用例收集起来,就可以通过testsuite来处理,可以把testsulte当成一个用例容器,而在testsuite中就有一个addtest方法可以将用例添加到这个容器里面形成一个套件。

Texttextrunner类该类是用来执行用例的,其中包含一个run()方法,该方法不但可以运行单个用例,也可以运行testsuite中的多个用例,并将执行结果保存到texttestresult里。

Testloader类,该类帮我们搜索所有test开头的测试用例并将搜索到的方法用testsuite收集起来所以使用unittest框架编写测试用例的时候用例命名需要用test打头。

Unittest框架结构分为三部分,首先是setup部分用于设计初始化环境的,该类中方法执行的时候都会先执行setup中的代码。运行部分:这里是编写测试用例的地方所有的用例命名都需要用test开头最后是teatdown部分:这里是用例执行完后还原测试环境的。  

自动化实现流程

我说下电商下单自动化测试流程吧,因为是基于Unittest框架进行编写所以需要用import unittest导入unittest模块还需要导入webdriver模块。

因为需要用webdriver方法去调用谷歌浏览器的驱动来打开浏览器,然后先定义一个类在参数中输入unittest.testcase用来继承unittest.testcase中的类,然后定义setup方法在setup中先将webdriver.Chrome赋值给self.变量。

chrome是我用的谷歌浏览器的驱动,并用login.dl(self.变量)来调用之前封装好的登录功能,然后再定义一个test打头的函数这里主要用于编写实际测试用例,然后在test函数中将slef.变量再次进行赋值给一个变量方便于操作。接下来进行定位搜索栏,输入商品名称,点击搜索按钮,用F12获取xpath值然后用find_element_By_xpath对搜索栏进行定位并赋值给一个变量。

这里说下为啥用xpath进行定位,因为有时候id 和name 等属性值不是唯一的或者没有,所以直接使用xpath进行定位会比较好能解决百分90的定位问题,然后使用send_keys()去进行输入操作和click()进行点击按钮操作,此时页面中会搜索出我搜索的商品,仍然通过xpath定位和click()操作搜索出的商品页面会新开窗口进入商品详情页,这时候就需要用window handles获取所有窗口的句柄并赋值给一个变量,然后使用switch to window加变量索引值切换到新窗口。

有时候网页会加载比较慢所以需要使用from time import sleep导入时间模块然后使用sleep等待3秒,确保网页加载完成后进行下一步操作,然后在用find_element by xpath.click选择商品的规格型号和商品数量,接下来通过find_element_by_xpath.text获取商品详情页中我选择的规格型号、商品数量、商品单价、订单小计/合计,通过find_element_by_xpath.click点击立即购买按钮,页面进入到确认订单页,然后通过find_element_by_xpath.text获取确认订单页规格型号、商品数量、商品单价、订单小计/合计与商品详情页选择的数据使用if判断进行比较。

如果一致就print 成功,否则else pirnt失败,确保订单中的数据是我在商品详情页中选择的数据,再接下来点击提交订单操作进行下单,下单后通过调用封装好的数据库读取模块传参(ip/dbuser/dbpwd/dbname/sql)进行访问数据库中order库获取我的订单数据,然后用order库中获取的数据与下单的数据进行if判断比较判断数据库中的订单数据是否正确,如果正确就print 成功,否则else pirnt失败。

然后就是定义teardown方法在teardown中用close命令关闭浏览器,然后就是进行调用执行,执行方法有三种:

  • 第一种unittest.main(),main的话就是执行了testloader类中的方法帮我们搜索test开头的用例并执行,执行顺序是按ascll码分布顺序运行的。
  • 第二种方法是用unittest.testsuit()方法,先将unittest.testsuit赋值给一个变量,然后通过这个变量使用addtest命令添加用例,在使用unittest.testrunner中的run方法执行这个变量。执行顺序的化是按照添加的顺序执行的。
  • 第三种方法是用unittest.default testloader.discover(加用例存放的路径,pattern等于模块名)再赋值给一个变量,然后同样通过unittest.testrunner中的run方法执行这个变量,然后为了查看执行详情结果所以需要写入执行报告。写入执行报告的话需要先导入一个HTMLtestrunnerCN 模块使用这个模块中 的htmltestrunner来写入执行报告并存放到指定的路径中。

最后祝大家都能找到心仪的工作,快乐工作,幸福生活,广阔天地,大有作为。我也整理了一波之前发布的软件测试文档【点击文末小卡片免费领取】,无套路领取!

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

华为大佬三天讲完的软件测试全套教程(2024最新版),从基础到项目实战,学完即就业!

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

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

相关文章

红与黑(c++题解)

题目描述 有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。 输入格式 包括多个数据集合。每个数据集合的第一行是…

【Mysql】面试题汇总

1. 存储引擎 1-1. MySQL 支持哪些存储引擎?默认使用哪个? 答: MySQL 支持的存储引擎包括 InnoDB、MyISAM、Memory 等。 Mysql 5.5 之前默认的是MyISAM,Mysql 5.5 之后默认的是InnoDB。 可以通过 show engines 查看 Mysql 支持…

外包2月,技术退步惊现!大专生逆袭大厂,全靠这份神秘资料!

大家好,我是一名大专生,19年通过校招进入湖南某软件公司,从事功能测试工作已近4年。今年8月,我意识到长期舒适的环境让我变得不思进取,技术停滞不前,甚至因此失去了谈了2年的女朋友。我下定决心&#xff0c…

金蝶云星空——插件dll重新发布报错:鏃犳硶鏄剧ず椤甸潰锛屽洜涓哄彂鐢熷唴閮ㄦ湇鍔″櫒閿欒銆�

项目场景: 金蝶插件开发 问题描述 今天更新了插件dll然后重启IIS金蝶就报如下错误: 解决方案: 折腾了一天结果发现是给自己挖坑了,这次更新我担心插件代码有问题就把原dll重命名了然后把最新dll更新到金蝶bin文件中&#xff0c…

vue实现双向绑定原理深度解析

1. vue双向绑定应用场景 Vue的双向绑定机制主要体现在以下几个方面: 表单输入:在表单输入中,Vue的双向绑定机制非常有用。通过v-model指令,可以将表单元素的值与Vue实例中的数据进行双向绑定,当用户在表单输入框中输入内容时,数据会自动更新,反之,当数据发生变化时,输…

【DBC专题】-11-使用Cantools将CAN/CANFD DBC自动生成C语言代码

目录 1 安装Python和Cantools 1.1 查看Python已安装的Package包 1.2 在Python中安装Cantools插件包 1.3 获取更多Cantools工具的更新动态 2 经典CAN/CANFD DBC自动生成C语言代码 2.1 批处理文件CAN_DBC_To_C.bat内容说明 2.2 经典CAN/CANFD DBC文件要求 2.3 如何使用生…

网站引用图片但它域名被墙了或者它有防盗链,我们想引用但又不能显示,本文附详细的解决方案非常简单!

最好的办法就是直接读取图片文件&#xff0c;用到php中一个常用的函数file_get_contents(图片地址)&#xff0c;意思是读取远程的一张图片&#xff0c;在输出就完事。非常简单&#xff5e;话不多说&#xff0c;直接上代码 <?php header("Content-type: image/jpeg&quo…

clipboard好用的复制剪切库

clipboard是现代复制到剪贴板的工具&#xff0c;其 gzip 压缩后只有 3kb&#xff0c;能够减少选择文本的重复操作&#xff0c;点击按钮就可以复制指定内容&#xff0c;支持原生HTMLjs&#xff0c;vue3和vue2。使用方法参照官方文档&#xff0c;so easy&#xff01;&#xff01;…

装X神器,装X图片生成器,高富帅模拟器

先展示两张效果 基金装X图 短信存款图 神器功能展示 总共有12大类可供用户选择 还有一些美感的&#xff1a; 总结 总之种类非常多&#xff0c;有了这个神器你懂的&#xff5e; 关注下方公众号&#xff0c;回复【zzsq】即可获取。

YS/T 429.2-2012 有机聚合物喷涂幕墙铝单板检测

有机聚合物喷涂幕墙铝单板是指以氟碳漆或粉末做表面涂层的幕墙用铝及铝合金单层形成的铝单板。 YS/T 429.2-2012有机聚合物喷涂幕墙铝单板检测项目&#xff1a; 测试项目 测试方法 力学性能 GB/T 16865 尺寸偏差 GB/T 3880.3 光泽 GB 5237 颜色和色差 GB 5237 厚度 …

2、鸿蒙学习-申请调试证书和调试Profile文件

申请发布证书 发布证书由AGC颁发的、为HarmonyOS应用配置签名信息的数字证书&#xff0c;可保障软件代码完整性和发布者身份真实性。证书格式为.cer&#xff0c;包含公钥、证书指纹等信息。 说明 请确保您的开发者帐号已实名认证。每个帐号最多申请1个发布证书。 1、登录AppGa…

Linux软件管理(1)

软件管理 下载 wget Linux wget是一个下载文件的工具&#xff0c;它用在命令行下。 wget工具体积小但功能完善&#xff0c;它支持断点下载功能&#xff0c;同时支持FTP和HTTP下载方式&#xff0c;支持代理服务器和设置起来方便简单。 1.语法 wget [选项]……[URL]…… 2、…

阅读基础知识1

一 网络 1. 三次握手四次挥手 三次握手&#xff1a;为了建立长链接进行交互即建立一个会话&#xff0c;使用 http/https 协议 ① 客户端产生初始化序列号 Seqx &#xff0c;向服务端发送建立连接的请求报文&#xff0c;将 SYN1 同步序列号&#xff1b; ② 服务端接收建立连接…

5.1.4、【AI技术新纪元:Spring AI解码】Amazon Bedrock

Amazon Bedrock是一个托管服务,通过统一的 API 提供来自各种 AI 提供商的基础模型。 Spring AI 通过实现 Spring 接口 ChatClient、StreamingChatClient 和 EmbeddingClient 来支持所有通过Amazon Bedrock可用的聊天和嵌入式 AI 模型。 此外,Spring AI 为所有客户端提供了 …

洛谷_P1068 [NOIP2009 普及组] 分数线划定_python写法

P1068 [NOIP2009 普及组] 分数线划定 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 知识点&#xff1a; 这道题用到了自定义排序规则 n, m map(int,input().split()) data [] for i in range(n):l list(map(int,input().split()))data.append(l)import functoolsdef my_cm…

软件测试:C++ Google Test单元测试框架GTest

目录 编译和安装框架使用AssertionsGoogle TestingGoogle MockingMatchersActions 运行结果 最近在写项目的时候&#xff0c;学到了许多关于软件测试的知识&#xff0c;也不断的使用新的测试框架和测试工具&#xff0c;每次总是机械式的拼接其他人的代码&#xff0c;代码发生错…

香港科技大学广州|智能制造学域博士招生宣讲会—同济大学专场

时间&#xff1a;2024年3月28日&#xff08;星期四&#xff09;10:00 地点&#xff1a;同济大学嘉定校区济人楼310 报名链接&#xff1a;https://www.wjx.top/vm/mmukLPC.aspx# 宣讲嘉宾&#xff1a;崔华晨 助理教授 跨学科重点研究领域 •工业4.0 •智能传感器、自动光学检…

linux系统实现数据磁盘挂载

先使用命令fdisk -l查看磁盘和设备 rootecs-8b3e-0314071:/mnt# fdisk -l Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 sectors Units: sectors of 1 * 512 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 b…

web攻防——csrf,ssrf

csrf 当我们在访问自己的管理员系统的时候&#xff0c;打开别人发的钓鱼连接就会自动增加管理员&#xff08;前提&#xff0c;后台在登录状态&#xff09;当我们打开别人发的网站&#xff0c;就会触发增加管理员的数据包 假设我们要测试这个网站 看到这个&#xff0c;就得下载一…

第二十七节 Java 多态

本章主要为大家介绍java多态的概念&#xff0c;以及便于理解的多态简单例子。 Java 多态 多态是同一个行为具有多个不同表现形式或形态的能力。 多态性是对象多种表现形式的体现。 比如我们说"宠物"这个对象&#xff0c;它就有很多不同的表达或实现&#xff0c;比…