https://docs.python.org/zh-cn/3/library/unittest.html
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'])
# check that s.split fails when the separator is not a string
with self.assertRaises(TypeError):
s.split(2)
if __name__ == '__main__':
unittest.main()
一个测试用例是一个独立的测试单元。它检查输入特定的数据时的响应。
一个基类: TestCase
,用于新建测试用例。
继承 unittest.TestCase
就创建了一个测试样例。
三个独立的测试是三个类的方法,命名都以 test
开头。
assertEqual()
检查预期的输出-
assertTrue()
和assertFalse()
验证一个条件 -
assertRaises()
验证抛出了一个特定的异常 -
unittest.main()
测试脚本的命令行接口 -
setUp()
测试开始前执行的指令 -
tearDown()
测试完成后需要执行的指令。若setUp()
成功运行,无论测试方法是否成功,都会运行tearDown()
。
import unittest
class WidgetTestCase(unittest.TestCase):
def setUp(self):
self.widget = Widget('The widget')
def test_default_widget_size(self):
self.assertEqual(self.widget.size(), (50,50),
'incorrect default size')
def test_widget_resize(self):
self.widget.resize(100,150)
self.assertEqual(self.widget.size(), (100,150),
'wrong size after resize')
def tearDown(self):
self.widget.dispose()
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())