晒晒我家小院子

0%

Unittest基础

unittest

核心例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import unittest
from unittest_demo.Calculator import Calculator

class TestCalculator(unittest.TestCase): # 1、继承unittest.TestCase类

def testDivide01(self): # 2、以test开头的函数
cal = Calculator()
result = cal.divide(10, 2)
self.assertEqual(result, 5) # 3、使用断言判断结果

def testDivide02(self):
cal = Calculator()
result = cal.divide(20, 0.5)
self.assertEqual(result, 40)

if __name__ == '__main__':
unittest.main() # 4、用unittest.main()执行所有test开头的函数,每个函数就是一个测试用例

unittest

  • 面向对象
  • 测试用例的组成:用例编号、模块、测试标题、前提条件、操作步骤、期望结果、世纪结果

概念

  • 测试脚手架 test fixture
  • 测试用例 TestCase 基类
  • 测试套件 test suite
  • 测试运行器 test runner

使用

1
2
3
4
5
6
7
setUp和tearDown 设置初始化和状态还原
unittest.main() # 开始执行测试
self.assertEqual # assertTrue、assertFalse
# assertRaises(), assertRaisesRegex(), assertWarns(), assertWarnsRegex()
with self.assertRaises(TypeError):
pass
# 命令 python -m unittest ...

常见判断方法:

image-20201027100723831 image-20201027101027126
1
2
3
4
5
6
7
8
9
10
# 测试套件 test suite
def suite():
suite = unittest.TestSuite()
suite.addTest(WidgetTestCase('test_default_widget_size')) # 这是一个测试方法名
suite.addTest(WidgetTestCase('test_widget_resize')) # 这是一个测试方法名
return suite

if __name__ == '__main__':
runner = unittest.TextTestRunner()
runner.run(suite())

跳过测试与预计的失败

1
2
3
4
5
6
# 跳过测试
@unittest.skip
@unittest.skipIf
@unittest.skipUnless
# 预计失败
@unittest.expectedFailure
-------------本文结束感谢您的阅读-------------