常州网站建设外包手机商场网站制作

news/2025/9/30 23:13:08/文章来源:
常州网站建设外包,手机商场网站制作,网站设计版权,网站不备案会怎...#x1f4e2;专注于分享软件测试干货内容#xff0c;欢迎点赞 #x1f44d; 收藏 ⭐留言 #x1f4dd; 如有错误敬请指正#xff01;#x1f4e2;交流讨论#xff1a;欢迎加入我们一起学习#xff01;#x1f4e2;资源分享#xff1a;耗时200小时精选的「软件测试」资… 专注于分享软件测试干货内容欢迎点赞 收藏 ⭐留言 如有错误敬请指正交流讨论欢迎加入我们一起学习资源分享耗时200小时精选的「软件测试」资料包 最困难的时候也就是我们离成功不远的时候 “ Python为开发者提供了内置的单元测试框架 unittest它是一种强大的工具能够有效地编写和执行单元测试。unittest 提供了完整的测试结构支持自动化测试的执行能够对测试用例进行组织并且提供了丰富的断言方法。最终unittest 会生成详细的测试报告这个框架非常简单且易于使用。” unittest核心概念 在 unittest 中有四个核心概念 TestCase测试用例每个测试用例实例用于封装一个或多个测试函数。 TestSuite测试套件这是多个测试用例的集合用于组织和执行多个测试用例。 TestLoader测试加载器这是一个用于将测试用例加载到测试套件中的工具。 TextTestRunner测试运行器这是用于执行测试用例的运行器负责运行测试并生成结果报告。 Fixture环境管理机制这是测试用例的环境搭建和销毁部分包括前置条件和后置条件。 unittest的工作流程 编写继承自 unittest.TestCase 的测试用例类其中每个测试函数都是一个独立的测试用例。使用 TestLoader 加载测试用例并将它们组织成 TestSuite 对象。使用 TestRunner 运行 TestSuite 中的测试用例并输出测试结果。 使用unittest初级指南 导入 unittest 模块以及被测试的文件或类。创建一个测试类并继承 unittest.TestCase所有自定义的单元测试类都要继承它作为基类。重写 setUp 和 tearDown 方法用于初始化和清理测试环境如果有必要。定义测试函数函数名以 test_ 开头这样才能被识别并执行。在测试函数中使用断言来判断测试结果是否符合预期。调用 unittest.main() 方法运行测试用例按照函数名的排序执行测试。 以下是一个简单的例子 import unittestdef login(username, password):if username kira and password 123:res {code: 200, msg: 登录成功}return resreturn {code: 400, msg: 登录失败}class TestLogin(unittest.TestCase):def test_login_success(self):测试登录成功test_data {username: kira, password: test}expect_data {code: 200, msg: 登录成功}res login(**test_data)self.assertEqual(res, expect_data)def test_login_error_with_error_password(self):账号正确密码错误登录失败test_data {username: kira, password: 12345}expect_data {code: 400, msg: 登录失败}res login(**test_data)self.assertEqual(res, expect_data)# 更多测试函数类似...if __name__ __main__:unittest.main() 以上是一个简单的测试用例包含了两个测试函数。运行脚本将输出测试结果。 unittest核心概念 测试脚手架 测试脚手架 是测试用例的前置条件和后置条件确保测试环境的初始化和清理从而保证测试的准确性和可靠性。 import unittestclass MyTestCase(unittest.TestCase):classmethoddef setUpClass(cls):# 类级别的前置条件设置整个类运行最先只执行一次print(setUpClass)classmethoddef tearDownClass(cls):# 类级别的后置条件清理整个类运行最后结束执行一次print(tearDownClass)def setUp(self):# 测试方法级别的前置条件设置所有测试方法运行前都执行一次print(setUp)def tearDown(self):# 测试方法级别的后置条件清理所有测试方法运行结束都执行一次print(tearDown)def test_example(self):# 测试用例print(test_example)if __name__ __main__:unittest.main() setUp()每个测试方法运行前执行用于测试前置的初始化工作。tearDown()每个测试方法结束后执行用于测试后的清理工作。setUpClass()所有的测试方法运行前执行用于单元测试类运行前的准备工作。使用 classmethod 装饰器装饰整个测试类运行过程中只会执行一次。tearDownClass()所有的测试方法结束后执行用于单元测试类运行后的清理工作。使用 classmethod 装饰器装饰整个测试类运行过程中只会执行一次。 测试用例 测试用例 是最小的测试单元用于检测特定的输入集合的特定的返回值。unittest 提供了 TestCase 基类所有的测试类都需要继承该基类而在该类下的函数如果以 test_ 开头则被标识为测试函数 class MyTestCase(unittest.TestCase):def test_addition(self):result 2 3self.assertEqual(result, 5) # 使用断言方法验证结果是否相等def test_subtraction(self):result 5 - 3self.assertTrue(result 2) # 使用断言方法验证结果是否为True# 更多测试用例函数... 断言方法 以下是常用的断言方法 assertEqual(a, b, msgNone)验证 a 等于 b。 assertNotEqual(a, b)验证 a 不等于 b。 assertTrue(x)验证 x 是否为 True。 assertFalse(x)验证 x 是否为 False。 assertIs(a, b)验证 a 是否是 b。 assertIsNot(a, b)验证 a 是否不是 b。 assertIsNone(x)验证 x 是否为 None。 assertIsNotNone(x)验证 x 是否不为 None。 assertIn(a, b)验证 a 是否在 b 中。 assertNotIn(a, b)验证 a 是否不在 b 中。 assertIsInstance(a, b)验证 a 是否是 b 类型的实例。 assertNotIsInstance(a, b)验证 a 是否不是 b 类型的实例。 可以使用这些方法进行断言也可以直接使用原生的assert来断言如果断言失败测试用例会被定义为执行失败。 忽略特定测试方法 unittest 提供了一些方法来跳过特定的测试用例 unittest.skip(reason)强制跳过reason 是跳过的原因。 unittest.skipIf(condition, reason)当 condition 为 True 时跳过。 unittest.skipUnless(condition, reason)当 condition 为 False 时跳过。 unittest.expectedFailure如果测试失败这个测试用例不会计入失败的统计。 使用实例方法self.skipTest() 使用和上述类似。 import sys import unittestclass Test1(unittest.TestCase):unittest.expectedFailure # 即使失败也会被计为成功的用例def test_1(self):assert 1 1 3unittest.skip(无条件跳过) # 不管什么情况都会进行跳过def test_2(self):print(22..., 4)unittest.skipIf(sys.platform win32, 跳过) # 如果系统平台为 Windows 则跳过def test_3(self):print(33..., 6)unittest.skipUnless(sys.platform win32, 跳过) # 除非系统平台为 Windows否则跳过def test_4(self):print(44..., 8)def test_5(self):self.skipTest(跳过)print(55..., 10)if __name__ __main__:unittest.main(verbosity2) 测试套件 测试套件用于收集和组织多个测试用例便于集中执行。 通过 unittest.main() 方法直接加载单元测试的测试模块这是一种简单的加载方式。所有测试用例的执行顺序按照方法名的字符串表示的 ASCII 码升序排序通过命名时使用 test_01_xxx 来指定执行顺序。 将所有的单元测试用例 TestCase 加载到测试套件 Test Suite 集合中然后一次性加载所有测试对象。 通过 TestSuite 对象收集 此方式适用于需要自定义组合特定测试用例的情况。 import unittestclass MyTestCase(unittest.TestCase):def test_addition(self):result 2 3self.assertEqual(result, 5)def suite():suite unittest.TestSuite()suite.addTest(MyTestCase(test_addition))return suiteif __name__ __main__:runner unittest.TextTestRunner()runner.run(suite()) 通过 TestLoader 对象收集 TestLoader 是 unittest 框架提供的加载测试用例的类。 import unittestif __name__ __main__:loader unittest.defaultTestLoader# 自动加载当前模块中所有以 test_ 开头的测试用例函数suite loader.loadTestsFromModule(__name__)runner unittest.TextTestRunner()runner.run(suite) import unittestclass MyTestCase(unittest.TestCase):def test_addition(self):result 2 3self.assertEqual(result, 5)if __name__ __main__:loader unittest.defaultTestLoader# 自动加载 MyTestCase 类中的所有测试用例suite loader.loadTestsFromTestCase(MyTestCase)runner unittest.TextTestRunner()runner.run(suite) import unittestif __name__ __main__:loader unittest.defaultTestLoader# 自动加载指定名称的测试用例suite loader.loadTestsFromName(module.MyTestCase.test_addition)runner unittest.TextTestRunner()runner.run(suite) import unittestif __name__ __main__:loader unittest.defaultTestLoader# 自动发现并加载指定目录中的测试用例模块suite loader.discover(start_dirtest_directory, patterntest_*.py, top_level_dirNone)runner unittest.TextTestRunner()runner.run(suite) 测试运行器 测试运行器是用于执行和输出测试结果的组件。常用的运行器有 unittest.TextTestRunner这是 unittest 框架中默认的测试运行器会在命令行输出测试结果。通过调用 run() 方法运行测试套件并将测试结果打印到控制台。 import unittestif __name__ __main__:loader unittest.defaultTestLoadersuite loader.discover(start_dirtests, patterntest_*.py)runner unittest.TextTestRunner()result runner.run(suite) HTMLTestRunner这是一个第三方库能够生成漂亮的 HTML 测试报告需要进行安装。你可以通过搜索获取相关文件进行安装。 import unittest from HTMLTestRunner import HTMLTestRunnerif __name__ __main__:loader unittest.defaultTestLoadersuite loader.discover(start_dirtests, patterntest_*.py)with open(test_report.html, wb) as report_file:runner HTMLTestRunner(streamreport_file, titleTest Report, descriptionTest Results)result runner.run(suite)XMLTestRunner这是另一个第三方库用于生成 XML 格式的测试报告。 import unittest from xmlrunner import XMLTestRunnerif __name__ __main__:loader unittest.defaultTestLoadersuite loader.discover(start_dirtests, patterntest_*.py)with open(test_report.xml, wb) as report_file:runner XMLTestRunner(outputreport_file)result runner.run(suite) 你也可以自定义测试运行器。继承 unittest.TestRunner 类并实现 run() 方法以创建自己的测试运行器。 import unittestclass MyTestRunner(unittest.TextTestRunner):def run(self, test):print(Running tests with MyTestRunner)result super().run(test)return resultif __name__ __main__:loader unittest.defaultTestLoadersuite loader.discover(start_dirtests, patterntest_*.py)runner MyTestRunner()result runner.run(suite) 通常使用 HTMLTestRunner 即可满足需求它非常易用。 实战一个测试案例 假设有一个测试函数 login # login.py def login(username, password):模拟登录校验if username kira and password 123456:return {code: 0, msg: 登录成功}else:return {code: 1, msg: 账号或密码不正确} 设计用例 根据函数的参数和逻辑设计如下用例 编写测试用例并运行 import unittest from login import loginclass TestLogin(unittest.TestCase):def test_login_correct(self):测试账号密码正确test_data {username: kira, password: 123456}expect_data {code: 0, msg: 登录成功}res login(**test_data)self.assertEqual(res, expect_data)def test_login_wrong_password(self):测试账号正确密码不正确test_data {username: kira, password: 123}expect_data {code: 1, msg: 账号或密码不正确}res login(**test_data)self.assertEqual(res, expect_data)def test_login_wrong_username(self):测试账号错误密码正确test_data {username: kir, password: 123456}expect_data {code: 1, msg: 账号或密码不正确}res login(**test_data)self.assertEqual(res, expect_data)if __name__ __main__:unittest.main() 这是一个简单的测试用例包含了三个测试函数。运行测试用例后会输出测试结果看完是否觉得unittest非常简单易用。ner.run(suite) 最后的分享 如果你想学习自动化测试那么下面这套视频应该会帮到你很多 如何逼自己1个月学完自动化测试学完即就业小白也能信手拈来拿走不谢允许白嫖.... 最后我这里给你们分享一下我所积累和整理的一些文档和学习资料有需要直接领取就可以了 以上内容对于软件测试的朋友来说应该是最全面最完整的备战仓库了为了更好地整理每个模块我也参考了很多网上的优质博文和项目力求不漏掉每一个知识点很多朋友靠着这些内容进行复习拿到了BATJ等大厂的offer这个仓库也已经帮助了很多的软件测试的学习者希望也能帮助到你。

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

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

相关文章

数据表和网站建设的关系个人名片模板

视频汇聚/视频云存储/集中存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、云存储、智能分析等,视频智能分析平台EasyCVR融合性强、开放度…

fdsaf -

Hello World fdafd fdaf function aa(){alert(1) }

【J+S 二十连测】-- 第十二套爆炸记

已成彩笔这都能打炸,为啥我这么菜啊?这都能打炸,为啥我这么菜啊?这都能打炸,为啥我这么菜啊?这都能打炸,为啥我这么菜啊?这都能打炸,为啥我这么菜啊?这都能打炸,为啥我这么菜啊?这都能打炸,为啥我这么菜啊…

2025-2026-1 CS3311 软件工程 个人项目第一版已发布

程序已开源在github 以下是任务清单: 时间单位:h,最小单位0.5计划明确需求:0.5开发分析需求、生成设计文档、设计复审、代码规范:1.5 具体设计:2 具体编码:6 代码复审:1.5 测试:1.5记录用时:0 测试报告:2.5…

Python浅拷贝、深拷贝

浅拷贝和深拷贝是处理复杂数据结构(如列表、字典、对象等)时的两种复制方式,核心区别在于是否复制嵌套的数据结构:1. 浅拷贝(Shallow Copy) 只复制最外层的数据,而嵌套的子对象(如列表中的列表、字典中的列表等…

免费网站开发框架做棋牌网站建设

ob对比其他软件 上文提到obsidian,这里对obsidian做一个简要的总结 优点:对比notion,语雀这些软件,内容存储在应用商的服务器上。它是存在本地的。 对比思源笔记。说一下思源笔记的不足。思源是块来控制的,回车就是一…

RPC在分布式存储系统中的应用 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

知名的家居行业网站开发南通门户网站建设

前言 云计算带来的优势之一便是弹性能力,云原生场景下Kubernetes提供了水平弹性扩容能力(HPA),让应用可以随着实时指标进行扩/缩。然而HPA的实际工作情况可能和我们直观预想的情况是不一样的,这里面存在一些认知误区。…

US$134 Tango Toyota Key Maker Authorization Service

Tango Toyota Key Maker Authorization ServiceIf you buy Tango Key Programmer Basic Software (SK80), and want to get the Toyota Key Maker Authorization, you can buy this service.Tips: No need shipping, a…

阿里业务身份建模

目录背景和价值一、基础:业务身份抽象——给盒马一个“独立且兼容”的“数字身份证”1. 业务身份的具体定义2. 抽象身份的核心价值:隔离共性与个性案例场景二、核心:流程引擎与双流程模版——线下线上“同路不同程”…

实用指南:矩阵结构体 图片绘制 超级玛丽demo6

实用指南:矩阵结构体 图片绘制 超级玛丽demo6pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &q…

网站百度收录批量查询无锡百姓网推广代理商

UWA Gears 是UWA最新发布的无SDK性能分析工具。针对移动平台,提供了实时监测和截帧分析功能,帮助您精准定位性能热点,提升应用的整体表现。 在上周的文章中,我们详细介绍了网格查看器的功能,介绍如何通过网格数据优化…

C语言实战任务:贪吃蛇(2)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年10.1~10.6日信息竞赛计划安排表

Day1: Educational Codeforces Round 5 abc127 Day2: 【MX-J25】梦熊 J 组 猫耳小赛 & TPOI Round 4 洛谷的 Day3: Educational Codeforces Round 6 abc128

阿里云函数计算 AgentRun 全新发布,构筑智能体时代的基础设施 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

四川省建设厅官方网站贵州企业网站建设价格

文章目录 1 问题描述2 验证2.1 验证猜想12.2 验证猜想2 3 结论4 mysql 为什么这么设计呢? 1 问题描述 创建一张表t,插入一行数据 mysql> CREATE TABLE t ( id int(11) NOT NULL primary key auto_increment, a int(11) DEFAULT NULL ) ENGINEInnoDB…

【Rust GUI开发入门】编写一个本地音乐播放器(10. 拼装UI组件) - Jordan

本系列教程对应的代码已开源在 Github zeedle 将前文写的零散的UI组件(歌曲列表/播放控制面板/歌词面板/设置面板)拼装起来,组成最终的音乐播放器UI,用TabWidget分成多标签页,每一个标签页分担不同的功能:export…

优易官方网站wordpress+快讯

Microsoft Visio 参与者 [actor] - 人的形状图标 1. 更多形状 -> 搜索形状2. 参与者References 1. 更多形状 -> 搜索形状 2. 参与者 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

破解 Pycharm

破解 Pycharm破解工具:下载链接: https://pan.baidu.com/s/1C4BB55LXPxW4s9lZlFt4FA?pwd=s5jc 提取码: s5jc 破解完成后,这个目录依然不能删除,否则破解失效。所以可将该目录保存至一个很少打开的位置。 先执行…

个人网站申请备案iis7.5 没有默认网站

当我们在浏览器中输入一个URL并按下回车键时,背后其实发生了一系列的复杂过程。这个过程涉及到了网络协议、服务器处理、数据传输等多个环节。下面,我们将详细解析这一过程。 一、URL解析 当我们在浏览器中输入URL并回车后,浏览器首先会进行…