这是一段简短的代码,来测试三种字符串方法
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()
继承 unittest.TestCase
就创建了一个测试样例。上述三个独立的测试是三个类的方法,这些方法的命名都以 test
开头。 这个命名约定告诉测试运行者类的哪些方法表示测试。
每个测试的关键是:调用 assertEqual()
来检查预期的输出; 调用 assertTrue()
或 assertFalse()
来验证一个条件;调用 assertRaises()
来验证抛出了一个特定的异常。使用这些方法而不是 assert
语句是为了让测试运行者能聚合所有的测试结果并产生结果报告。
通过 setUp()
和 tearDown()
方法,可以设置测试开始前与完成后需要执行的指令。 在 组织你的测试代码 中,对此有更为详细的描述。
最后的代码块中,演示了运行测试的一个简单的方法。 unittest.main()
提供了一个测试脚本的命令行接口。当在命令行运行该测试脚本,上文的脚本生成如以下格式的输出: