[Python unittest] 1-Basic
-
Test Feture
测试夹具,代表执行一个或多个测试所需的准备工作,以及任何关联清理操作,这可能涉及到,例如创建临时代理数据库、目录或启动服务器进程 -
Test Case
测试用例,是测试的最小单元。它检查特定输入集的特定响应。单元测试提供了一个基类,可用于创建新的测试用例 -
Test Suite
测试套件,是测试用例、测试套件或两者的集合。它用于聚合应该一起执行的测试。 -
Test Runner
测试运行,执行测试,并提供给用户结果,可以使用图形界面、文本接口,或者返回一个特殊值来指示执行测试的结果
-
新建一个tests.py文件
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的测试用例
每个测试用例的关键是:assertequal()检查预期的结果;asserttrue()或assertfalse()验证条件;assertraises()验证一个特定的异常得到处罚。这些方法被用来代替断言语句,因此测试运行器可以累积所有测试结果并生成报告。
之后会用到的setup()和teardown()方法,允许您定义每个测试方法执行之前和之后的操作。 -
在命令行执行该脚本
python .../tests.py
... ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK
suite = unittest.TestLoader().loadTestsFromTestCase(TestStringMethods) unittest.TextTestRunner(verbosity=2).run(suite)
再次执行
test_isupper (__main__.TestStringMethods) ... ok test_split (__main__.TestStringMethods) ... ok test_upper (__main__.TestStringMethods) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK