unittest测试框架介绍

一.定义:

  unittest是python中一个标准的测试框架,内置的库,主要用于对代码中写好的内容进行验证。提供了创建测试用例,测试套件以及批量执行的方案,可以去检验自动化脚本中每条用例的内容是否正确。使用的时候直接用import unittest语句导入即可。

二.框架的组成:
  Unittest中主要由5部分组成

    1.TestCase:测试类,编写单元测试用例最常用的类;可以理解为一个页面,页面下面再去写功能点的用例。写用例前,必须首先要定义一个类,这个类需要继unittest.TestCase。类的名字没有强制要求,一般会用Test_开头,比如test_Login;也可以用中文


    2.Test Fixture:设置用例开始执行前的前置工作和用例执行完成后的善后工作,使后续的测试用例执行不受影响。比如在测试登录时,刚开始执行需要打开浏览器,执行测试用例,用例执行完后,需要关闭浏览器。常用的主要有以下4个

      setUp():用例的前置操作,每次执行test的用例前,都会执行setUp()里的代码

      tearDown():用例执行完后执行的操作,在每个test用例执行完之后,都会执行tearDown()里的代码。

    3.测试方法:即测试用例,一个用例是一个方法,用def定义,必须要以test开头,这是unittest框架中的规范, 如果用例不是以test开头的话,在执行时会直接跳过该用例不会被执行。

    4.test suite:测试套件、集合;在一个测试用例集中可能存在很多用例,它把测试用例组织到一起进行一个整体的测试,而且Test Suit可以指定我们要执行哪几条,或者指定用例的执行顺序(如果不指定的话是按着用例名称在ASCII码表中进行排序)

   5.test runner和test report:test runner负责从指定的测试模块或者测试目录中发现所有的测试用例。它会扫描文件或目录,识别出所有的测试方法和测试类。一旦发现了所有的测试用例,test runner 就会按照套件里设置的顺序执行这些测试用例。在执行完所有测试用例后,test runner 会生成详细的测试报告test report

       上面这段代码创建了一个 TextTestRunner 的实例。TextTestRunner 是 unittest 框架中的一个类,用于运行测试用例并生成文本格式的测试报告。它会执行传递给它的测试套件(test_suite_kh

)中的所有测试用例。

三.@classmethod装饰器:

  上面的测试文件中有test_case1、test_case2、test_case3、test_case4,当运行这个测试文件时每个用例执行完成后都重新执行setUp()方法打开浏览器、输入账号密码;和tearDown()方法关闭浏览器。如果这四个用例不是测试登录而是测试登录后的模块,那么久不需要反复登录、关闭浏览器,手工测试时只需要登录一次,执行完所有用例后再关闭,这时就要用到@classmethod装饰器;使用@classmethod必须与Test Fixture中的另外两个设置setUpClass()和tearDownClass()一起用。

      setUpClass():这个也是前置操作,不过这个只会执行一次,在最最最开始的时候优先执行setUpClass()里的代码,在使用setUpClass()时必须加装饰器@classmethod。

      tearDownClass():这个是类里所有都运行完之后运行的操作,和setUpClass()一样,这个只会在所有代码都运行完后,最最最后运行一次,在使用tearDownClass()时也是必须加装饰器@classmethod。

Python 的 `unittest` 测试框架Python 标准库中自带的一个用于编写和运行测试的模块,它基于 JUnit 测试框架的设计理念,支持面向对象的测试方式。该框架允许开发者通过编写测试用例来验证代码的行为是否符合预期,是进行自动化测试的重要工具之一。 `unittest` 支持测试自动化、共享测试代码、测试用例组织以及测试报告生成等功能。其核心组件包括测试用例(test case)、测试套件(test suite)、测试运行器(test runner)和测试装置(test fixture)等[^1]。 测试用例通常继承自 `unittest.TestCase` 类,并通过定义以 `test_` 开头的方法来标识测试方法。测试方法中可以使用断言方法(如 `assertEqual`, `assertTrue`, `assertRaises` 等)来验证代码的行为是否符合预期。以下是一个简单的测试用例示例: ```python import unittest class TestStringMethods(unittest.TestCase): def test_upper(self): self.assertEqual('foo'.upper(), 'FOO') def test_isupper(self): self.assertTrue('FOO'.isupper()) self.assertFalse('Foo'.isupper()) def test_split(self): s = 'hello world' self.assertEqual(s.split(), ['hello', 'world']) # 检查是否抛出异常 with self.assertRaises(TypeError): s.split(2) if __name__ == '__main__': unittest.main() ``` 在上述代码中,`TestStringMethods` 类定义了多个测试方法,每个方法都使用断言来验证特定条件。测试用例通过 `unittest.main()` 方法运行,它会自动发现并执行所有以 `test_` 开头的方法。 测试装置用于设置测试环境和清理资源,通常通过 `setUp()` 和 `tearDown()` 方法实现。`setUp()` 方法在每个测试方法执行前被调用,用于准备测试环境;而 `tearDown()` 方法在每个测试方法执行后被调用,用于清理测试环境。如果需要在所有测试方法之前或之后执行某些操作,可以使用类方法 `setUpClass()` 和 `tearDownClass()` [^1]。 测试套件(`unittest.TestSuite`)可以将多个测试用例组合在一起,以便批量运行测试。测试运行器(如 `unittest.TextTestRunner`)负责执行测试套件并输出测试结果。可以通过以下方式手动创建测试套件并运行: ```python suite = unittest.TestLoader().loadTestsFromTestCase(TestStringMethods) runner = unittest.TextTestRunner(verbosity=2) runner.run(suite) ``` `unittest` 框架还支持命令行接口,可以通过命令行直接运行测试脚本。例如,若测试脚本名为 `test_example.py`,则可以通过以下命令运行测试: ```bash python -m unittest test_example.py ``` 此外,`unittest` 提供了丰富的断言方法,涵盖了常见的测试需求,如比较值、检查布尔条件、验证异常抛出等。这些断言方法使得编写测试用例更加简洁和高效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值