python中unittest的测试用例执行顺序

本文介绍Python的unittest框架的四种批量执行测试用例的方法,包括使用unittest.main()、构造TestSuite、TestLoader逐一加载及使用discover()方法。详细解释了如何通过不同方式组织和运行测试案例,适用于自动化测试场景。

作者:xinyuanjing123 
来源:优快云 
原文:https://blog.youkuaiyun.com/xinyuanjing123/article/details/80793651 
版权声明:本文为博主原创文章,转载请附上博文链接!

利用python的unittest框架批量执行case的加载方式有2种:
  1.通过unittest.main()来启动所需测试的测试模块;
  2.添加到testsuite集合中再加载所有的被测试对象,而testsuit里存放的就是所需测试的用例;
方案大概为以下4种:
1、通过unittest.main()来执行测试用例的方式:

if __name__ == "__main__":
     unittest.main()
2、通过testsuit来执行测试用例的方式:

if __name__ == "__main__":
     # 构造测试集
     suite = unittest.TestSuite()
     suite.addTest(TestCase("testCreateFolder"))
     suite.addTest(TestCase("testDeleteFolder")) 
     # 执行测试
     runner = unittest.TextTestRunner()
     runner.run(suite)

3、通过testLoader 逐一添加测试脚本:

if __name__ == "__main__":
     #此用法可以同时测试多个类
     suite1 = unittest.TestLoader().loadTestsFromTestCase(TestCase1) 
     suite2 = unittest.TestLoader().loadTestsFromTestCase(TestCase2) 
     suite = unittest.TestSuite([suite1, suite2]) 
     unittest.TextTestRunner(verbosity=2).run(suite)

4、通过TestLoader 类中提供的discover():

import unittest

case_path="./test_case/"
suite=unittest.defaultTestLoader.discover(case_path,pattern="test_*.py")
if __name__=='__main__':
    runner=unittest.TextTestRunner()
    runner.run(suite)
然后我们已知unittest默认加载脚本的顺序是:根据ASCII码的顺序加载,数字与字母的顺序为:0-9,A-Z,a-z。所以以A开头的测试用例方法会优先执行,以a开头会后执行。

 

<think> 我们正在使用Pythonunittest库编写测试用例。根据引用,我们可以知道unittest库是Python自带的单元测试框架,用于编写运行测试用例。 编写测试用例的基本步骤: 1. 导入unittest模块 2. 创建一个测试,该继承unittest.TestCase 3. 在测试中定义测试方法方法名必须以“test_”开头,这样unittest才会将其识别为测试方法 4. 在测试方法中,使用unittest提供的断言方法(如assertEqual, assertTrue等)来验证结果 5. 最后,可以添加一个启动测试的入口(例如:unittest.main()) 另外,根据引用[4],我们还可以使用TestSuite控制测试用例执行顺序选择执行哪些测试用例。 下面我们通过一个简单的示例来展示如何编写测试用例。 </think> ### Python unittest库编写测试用例方法 Pythonunittest库是标准库中的单元测试框架,用于编写运行测试用例。以下是编写测试用例的核心步骤: 1. **导入unittest模块** 首先导入unittest库: ```python import unittest ``` 2. **创建测试** 创建继承`unittest.TestCase`的测试: ```python class TestStringMethods(unittest.TestCase): ``` 3. **编写测试方法** 每个测试方法必须以`test_`开头: ```python def test_upper(self): self.assertEqual('foo'.upper(), 'FOO') # 验证大写转换 def test_isupper(self): self.assertTrue('FOO'.isupper()) # 验证是否大写 self.assertFalse('Foo'.isupper()) ``` 4. **使用断言方法** 常用的断言方法包括: - `assertEqual(a, b)`: 验证a == b - `assertTrue(x)`: 验证x为True - `assertFalse(x)`: 验证x为False - `assertRaises(exc, func, *args)`: 验证函数抛出指定异常 5. **组织测试套件(可选)** 使用`TestSuite`控制执行顺序选择用例(引用[^4]): ```python suite = unittest.TestSuite() suite.addTest(TestStringMethods('test_upper')) # 添加特定测试 ``` 6. **执行测试** 使用以下方式运行测试: ```python if __name__ == '__main__': unittest.main() # 执行所有测试 # 或指定测试套件:unittest.TextTestRunner().run(suite) ``` #### 完整示例 ```python import unittest class TestMathOperations(unittest.TestCase): def test_addition(self): self.assertEqual(1 + 2, 3) # 验证加法结果 def test_division(self): with self.assertRaises(ZeroDivisionError): # 验证除零异常 1 / 0 if __name__ == '__main__': unittest.main() ``` #### 关键特性 1. **自动发现测试** 使用`unittest.defaultTestLoader.discover()`自动加载目录中的测试用例(引用[^3]): ```python discover = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py') ``` 2. **测试固件** 通过`setUp()``tearDown()`管理测试环境: ```python class DatabaseTest(unittest.TestCase): def setUp(self): self.conn = create_db_connection() # 每个测试前执行 def tearDown(self): self.conn.close() # 每个测试后执行 ``` 3. **生成测试报告** 配合HTMLTestRunner生成可视化报告(引用[^3]): ```python with open('report.html', 'wb') as f: runner = BSTestRunner(stream=f, title='Test Report') runner.run(discover) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值