当前位置: 首页 > news >正文

小米网站的建设目的营销网

小米网站的建设目的,营销网,贵阳网站建设葫芦岛,温岭营销型网站建设Unittest 一、Unittest 简介 unittest是 Python 内置的标准测试框架#xff0c;用于编写和运行单元测试。它提供了一组工具和类#xff0c;帮助开发者组织、编写和执行测试用例#xff0c;以验证代码的正确性。 二、Unittest 核心要素 1. TestCase#xff08;测试用例类…Unittest 一、Unittest 简介 unittest是 Python 内置的标准测试框架用于编写和运行单元测试。它提供了一组工具和类帮助开发者组织、编写和执行测试用例以验证代码的正确性。 二、Unittest 核心要素 1. TestCase测试用例类 定义与作用 TestCase是unittest框架中最小的测试单元用于封装一个具体的测试场景。它通常是一个继承自unittest.TestCase的类每个类中的方法代表一个具体的测试用例。测试用例应该是独立的、可重复执行的并且能够验证被测试代码的特定功能或行为。 主要方法 例如 import unittestclass TestCase(unittest.TestCase):def setUp(self):self.num 5def tearDown(self):del self.numdef test_equal(self):self.assertEqual(self.num, 5)if __name__ __main__:unittest.main() setUp()在每个测试方法执行之前被调用用于设置测试环境例如初始化对象、创建临时文件等。tearDown()在每个测试方法执行之后被调用用于清理测试环境例如删除临时文件、释放资源等。测试方法以“test_”开头的方法被视为测试方法这些方法中包含具体的测试逻辑和断言用于验证被测试代码的输出是否符合预期。 2. TestSuite测试套件 定义与作用 TestSuite用于组合多个测试用例或测试套件形成一个更大的测试集合。它可以将多个相关的测试用例组织在一起方便一次性执行。通过TestSuite可以灵活地选择要执行的测试用例以及控制测试的执行顺序。 主要方法 例如 import unittestclass TestA(unittest.TestCase):def test_a(self):passclass TestB(unittest.TestCase):def test_b(self):passsuite unittest.TestSuite() suite.addTest(TestA(test_a)) suite.addTest(TestB(test_b)) addTest(test_case)将一个测试用例添加到测试套件中。addTests(test_cases)将多个测试用例添加到测试套件中。 3. TestRunner测试运行器 定义与作用 TestRunner负责执行测试用例或测试套件并生成测试结果报告。它可以将测试结果以文本形式或其他格式输出以便开发者查看测试的执行情况。不同的TestRunner可以提供不同的输出格式和功能例如TextTestRunner以文本形式输出测试结果而一些第三方库可以生成 HTML 格式的测试报告。 主要方法 例如 import unittestsuite unittest.TestSuite() # 添加测试用例到套件 runner unittest.TextTestRunner() result runner.run(suite) run(test)执行给定的测试用例或测试套件并返回一个TestResult对象其中包含测试的结果信息。 4. 示例代码 4.1. 新建一个文件test01.py用例如下 import unittestdef sum_( a, b):return a bclass TestA(unittest.TestCase):def test_add_1(self):result sum_(1, 2)self.assertEqual(result, 3)def test_add_2(self):result sum_(2, 3)self.assertNotEqual(result, 4) 4.2. 新建一个文件test02.py用例如下 import unittestdef sub_( a, b):return a - bclass TestB(unittest.TestCase):def test_sub_1(self):result sub_(4, 2)self.assertEqual(result, 2)def test_sub_2(self):result sub_(4, 1)self.assertNotEqual(result, 4) 4.3. 新建一个文件003.py通过TestSuite选择用例进行执行 import unittest import test01 import test02suite unittest.TestSuite() # 添加test01文件中的用例test_add_1 suite.addTest(test01.TestA(test_add_1)) # 添加test02文件中的用例test_sub_1 suite.addTest(test02.TestB(test_sub_1)) runner unittest.TextTestRunner() runner.run(suite) 5. TestLoader测试加载器 5.1. 定义与作用 TestLoader用于自动发现和加载测试用例。它可以根据指定的规则搜索测试模块、测试类和测试方法并将它们加载到测试套件中。TestLoader使得开发者可以方便地组织和执行大量的测试用例而无需手动添加每个测试用例到测试套件中。 5.2. 主要方法 例如 import unittestloader unittest.TestLoader() suite loader.loadTestsFromModule(__name__) loadTestsFromModule(module)从一个 Python 模块中加载测试用例。loadTestsFromTestCase(test_case_class)从一个测试用例类中加载测试用例。loadTestsFromName(name)根据给定的名称加载测试用例可以是模块名、类名或方法名。 5.3. 示例 5.3.1. loadTestsFromModule(module) 创建一个名为my_module.py的模块其中包含以下测试用例类 # my_module.py import unittestclass MyTestCase1(unittest.TestCase):def test_method1(self):self.assertEqual(2 2, 4)class MyTestCase2(unittest.TestCase):def test_method2(self):self.assertTrue(5 3) 使用loadTestsFromModule执行用例 import unittest import my_moduleloader unittest.TestLoader() suite loader.loadTestsFromModule(my_module)runner unittest.TextTestRunner() runner.run(suite) 5.3.2. loadTestsFromTestCase(test_case_class) 创建一个测试用例类定义如下 import unittestclass MySpecialTestCase(unittest.TestCase):def test_something(self):self.assertEqual(3 * 3, 9)def test_another_thing(self):self.assertFalse(2 3) 使用loadTestsFromTestCase执行用例 import unittest from your_module import MySpecialTestCaseloader unittest.TestLoader() suite loader.loadTestsFromTestCase(MySpecialTestCase)runner unittest.TextTestRunner() runner.run(suite) 5.3.3. loadTestsFromName(name) 以模块名为例 创建一个模块test_module.py其中包含测试用例类。 # test_module.py import unittestclass TestInModule(unittest.TestCase):def test_one(self):self.assertEqual(4 * 2, 8) import unittestloader unittest.TestLoader() suite loader.loadTestsFromName(test_module) # 注意这里有引号runner unittest.TextTestRunner() runner.run(suite) 以类名为例 继续使用上面的test_module.py模块。 import unittestloader unittest.TestLoader() suite loader.loadTestsFromName(test_module.TestInModule) # 注意这里有引号runner unittest.TextTestRunner() runner.run(suite) 以方法名为例 同样使用上面的模块。 import unittestloader unittest.TestLoader() suite loader.loadTestsFromName(test_module.TestInModule.test_one) # 注意这里有引号runner unittest.TextTestRunner() runner.run(suite) 6. Fixture 6.1. 定义与作用 Fixture 是在测试用例执行前后执行的一组操作用于设置测试环境和清理资源。例如在测试数据库操作时可以在测试用例执行前连接数据库在测试用例执行后关闭数据库连接。Fixture 可以确保每个测试用例都在相同的初始状态下执行提高测试的可重复性和可靠性。 6.2. 主要方法 例如 import unittestclass MyTest(unittest.TestCase):classmethoddef setUpClass(cls):print(Set up class.)def setUp(self):print(Set up.)def test_method(self):print(Running test method.)def tearDown(self):print(Tear down.)classmethoddef tearDownClass(cls):print(Tear down class.) setUp()在每个测试用例执行前调用用于设置测试环境。tearDown()在每个测试用例执行后调用用于清理测试环境。setUpClass()在测试类的所有测试用例执行前调用一次通常用于执行一些耗时的初始化操作如连接数据库。tearDownClass()在测试类的所有测试用例执行后调用一次用于清理资源如关闭数据库连接。 总之unittest的这些核心要素相互配合提供了一个强大的测试框架帮助开发者编写、组织和执行单元测试以确保代码的质量和稳定性。 三、断言Assertions 1. 定义和作用 断言是用于验证测试结果是否符合预期的语句。在测试用例中通过断言来检查实际结果与预期结果是否一致。如果断言失败测试用例将被标记为失败。断言可以帮助开发者快速发现代码中的错误提高代码的质量和可靠性。 2. 常见的断言方法 例如 import unittestclass MyTest(unittest.TestCase):def test_equal(self):self.assertEqual(2 2, 4)def test_not_equal(self):self.assertNotEqual(2 2, 5)def test_true(self):self.assertTrue(2 3)def test_false(self):self.assertFalse(2 3) assertEqual(a, b)断言 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 中。 四、参数化Parameterization 1. 定义和作用 参数化测试是一种将相同的测试逻辑应用于不同的输入数据的技术。通过参数化可以减少重复的测试代码提高测试的效率和覆盖度。参数化测试可以使用不同的输入数据来验证代码的正确性从而发现更多的错误。 2. 实现方法 2.1. 使用 unittest.TestCase.subTest() 方法 使用 unittest.TestCase.subTest() 方法可以在一个测试方法中使用 subTest 方法来对不同的输入数据进行测试。每次调用 subTest 方法时都会执行相同的测试逻辑但使用不同的输入数据。 import unittestclass MyTest(unittest.TestCase):def test_addition(self):data [(2, 3, 5), (4, 5, 9), (6, 7, 13)]for a, b, expected in data:with self.subTest(aa, bb):self.assertEqual(a b, expected) 2.2. 使用第三方库 如 pytest 或 parameterized这些库提供了更强大的参数化测试功能可以更方便地实现参数化测试。安装第三方库 pip install parameterized导包from parameterized import parameterized代码示例 import unittest from parameterized import parameterizeddef add_numbers(a, b):return a bclass TestAddNumbers(unittest.TestCase):parameterized.expand([(1, 2, 3),(4, 5, 9),(10, -5, 5)])def test_add_numbers(self, a, b, expected_result):result add_numbers(a, b)self.assertEqual(result, expected_result)if __name__ __main__:unittest.main() 五、跳过Skipping 1. 定义和作用 有时候某些测试用例可能在特定的条件下不适合执行或者已知存在问题。在这种情况下可以使用跳过机制来跳过这些测试用例避免不必要的失败。跳过测试用例可以提高测试的效率并且可以在特定的情况下避免错误的报告。 2. 实现方法 例如 import unittestclass MyTest(unittest.TestCase):unittest.skip(This test is skipped for now.)def test_skipped_method(self):passunittest.skipIf(2 3, This test is skipped if 2 3.)def test_skipped_if_method(self):passunittest.skipUnless(2 3, This test is skipped unless 2 3.)def test_skipped_unless_method(self):pass 使用 unittest.skip(reason) 装饰器可以在测试方法上使用 skip 装饰器来跳过该测试用例。reason 参数是一个字符串用于说明跳过的原因。使用 unittest.skipIf(condition, reason) 装饰器可以根据特定的条件来跳过测试用例。如果 condition 为 True则跳过该测试用例。使用 unittest.skipUnless(condition, reason) 装饰器与 skipIf 相反只有当 condition 为 True 时才执行该测试用例。 六、生成 HTML 测试报告 1. 定义和作用 生成 HTML 测试报告可以将测试结果以更直观的形式展示出来方便开发者查看和分析测试结果。HTML 测试报告可以包含测试用例的名称、执行时间、结果状态等信息以及详细的错误信息和堆栈跟踪。 2. 实现方法 例如使用 HTMLTestRunner这里可能会出现兼容问题生成报告内容为空具体问题具体解决 import unittest import HTMLTestRunnerclass MyTest(unittest.TestCase):def test_method(self):self.assertEqual(2 2, 4)if __name__ __main__:suite unittest.TestLoader().loadTestsFromTestCase(MyTest)with open(test_report.html, wb) as f:runner HTMLTestRunner.HTMLTestRunner(streamf, titleTest Report, descriptionUnit Test Results)runner.run(suite) 参数说明 streamopen 函数打开的文件流 title[可选参数]为报告标题 description[可选参数]为报告描述信息比如操作系统、浏览器等版本 使用第三方库如 HTMLTestRunnerHTMLTestRunner 是一个用于生成 HTML 测试报告的第三方库。可以将测试用例的执行结果输出为 HTML 格式的报告。使用 unittest 的 TextTestRunner 并结合其他工具可以使用 TextTestRunner 来执行测试用例并将结果输出到一个文件中。然后可以使用其他工具将文本报告转换为 HTML 格式的报告。 总之unittest模块提供了丰富的功能来支持单元测试包括Fixture、断言、参数化、跳过和生成 HTML 测试报告等。这些功能可以帮助开发者提高代码的质量和可靠性并且可以更方便地进行测试和调试。
http://www.dnsts.com.cn/news/152027.html

相关文章:

  • 怎么自己做微网站吗58同城如何发广告
  • 做网站用哪个开发工具好松江公司做网站
  • 个人网站可以做信息网站吗企业网站推广内容
  • 山西省大同市网站建设公司个人简历免费模板
  • 爱站seo工具wordpress discuz插件
  • 塘厦做网站济宁做网站哪家好
  • 大型网站建设 教程wordpress更新主机名
  • 毕设做桌面软件 网站苏州现在能正常出入吗
  • 做的网站速度慢如何让网页适应屏幕尺寸
  • 用jsp做网站需要的知识重庆市建设工程信息网官网入口
  • 怎么做app和网站购物车做网站网页需要什么软件
  • 做网站推广的方法温州网页设计招聘信息网
  • 丽水做网站公司虚拟主机网站500错误
  • 做外贸网站基本流程江门网站推广公司
  • 网站安全开通网站费可以做待摊费用吗
  • 网站建设学校线上营销工具
  • 网站优化的常见问题wordpress网
  • 网站内页做友链微网站建站
  • 部队网站源码ict网站建设
  • 课程介绍网站建设ppt模板娄底建设公司网站
  • 大型银行网站建设网站建设与建设
  • 知名中文网站建设墨鱼wordpress
  • 网站建设推广行业湖北 个人网站备案时间
  • 宁波网站建设多少钱一年湘潭简单的网站建设公司
  • 怎么用lamp做网站东陵网站制作
  • 图片网站该如何做seo优化仿网站源码是怎么弄的
  • 云南凡科建站完全免费的crm
  • 网站建设培训学校北京wordpress统计代码
  • 婚庆公司网站源码中国纪检监察报官网
  • 网站维保方法网站建设与设计 毕业设计