news 2026/6/4 9:22:40

实例介绍—Unittest框架及自动化测试实现流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
实例介绍—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来写入执行报告并存放到指定的路径中。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 23:06:22

Qwen2.5-7B实战:10分钟搭建个人编程助手,花费2元

Qwen2.5-7B实战:10分钟搭建个人编程助手,花费2元 引言:为什么选择Qwen2.5-7B作为编程助手? 作为一名开发者,你是否经常遇到以下场景:写代码时卡在某个语法细节、需要快速生成示例代码、或者想优化现有代码…

作者头像 李华
网站建设 2026/5/30 20:21:32

AI智能实体侦测服务在金融领域的应用:客户报告实体提取案例

AI智能实体侦测服务在金融领域的应用:客户报告实体提取案例 1. 引言:AI 智能实体侦测服务的业务价值 在金融行业,每天都会产生海量的非结构化文本数据——包括客户尽调报告、信贷审批材料、新闻舆情、监管文件等。这些文档中蕴含着大量关键…

作者头像 李华
网站建设 2026/5/31 1:46:39

Qwen2.5-7B搭建教程:0配置云端镜像,1小时1块钱

Qwen2.5-7B搭建教程:0配置云端镜像,1小时1块钱 引言:为什么选择Qwen2.5-7B? 作为个人站长,你可能经常遇到这样的困扰:想给网站增加AI聊天功能提升用户体验,但自己租用的VPS服务器没有GPU&…

作者头像 李华
网站建设 2026/5/31 1:46:33

AI智能实体侦测服务在医疗文本分析中的应用案例

AI智能实体侦测服务在医疗文本分析中的应用案例 1. 引言:AI 智能实体侦测服务的背景与价值 随着电子病历、医学文献和临床记录的数字化进程加速,医疗机构积累了海量的非结构化文本数据。这些数据中蕴含着大量关键信息——如患者姓名、就诊医院、疾病名…

作者头像 李华
网站建设 2026/5/29 2:28:45

Qwen2.5-7B避坑指南:云端GPU解决环境冲突,1小时1块

Qwen2.5-7B避坑指南:云端GPU解决环境冲突,1小时1块 1. 为什么需要云端GPU环境 作为开发者,你可能遇到过这样的困境:本地环境已经配置了CUDA 11.6用于A项目,但新接触的Qwen2.5-7B模型却要求CUDA 12.1。重装系统会影响…

作者头像 李华
网站建设 2026/5/28 14:50:19

AI智能实体侦测服务性能优化:RaNER模型推理效率提升

AI智能实体侦测服务性能优化:RaNER模型推理效率提升 1. 背景与挑战:中文命名实体识别的工程落地瓶颈 随着自然语言处理技术在信息抽取、知识图谱构建和智能客服等场景中的广泛应用,命名实体识别(Named Entity Recognition, NER&…

作者头像 李华