unittest
unittest - Unit testing framework
Basic example
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"]) with self.assertRaises(TypeError): s.split(2) if __name__ == '__main__': unittest.main()
Command-Line Interface
python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method
python -m unittest -v test_module
Command-line options
-b, --buffer : 在测试运行期间,标准输出和标准错误流被缓冲。通过测试期间的输出被丢弃。输出在测试失败或错误时正常回显,并添加到失败消息中。 -c, --catch: -f, --failfast: 遇到第一个错误停止运行 -k:仅运行与模式或子字符串匹配的测试方法和类。此选项可以多次使用,在这种情况下,包括与给定模式匹配的所有测试用例。 --locals: 显示局部变量
Test Discovery
New in version 3.2
python -m unittest 相当于python -m unittest discover

-v, --verbose Verbose output,详细输出 -s, --start-directory directory Directory to start discovery (. default)。哪个目录开始查找,默认是当前目录 -p, --pattern pattern Pattern to match test files (test*.py default)。查找的匹配模式 -t, --top-level-directory directory Top level directory of project (defaults to start directory)。项目的顶级目录
unittest 的组件
Test Fixture(测试夹具): 通过使用测试夹具,可以定义在单个或多哥测试执行之前的准备工作和执行执行之后的清理工作 Test Case(测试用例): 一个测试用例就是unittest最小的测试单元。它通过unittest提供的assert方法验证一组特定的操作和输入以后得到的具体响应。 Test Suite(测试套件): 一个测试套件是多个测试或测试用例的集合,是针对被测试程序的对应的动能和模块创建一组测试,一个测试套件内的测试用例将一起执行。 Test Runner(测试执行器): 测试执行器负责测试执行调度并且生成测试结果给用户。测试执行器可以使用图形界面,文本界面或者特定的返回值来展示测试结果 Test Report(测试报告): 测试报告用来展示所有执行用例的成功或者失败状态的汇总,执行失败的测试步骤的预期结果与实际结果,还有整体运行状况和运行时间的汇总
Arrange: 是用来初始化测试的前置条件,包含初始化呗测试的对象,相关配置和依赖
Act:用来执行功能操作
Assert: 用来校验实际结果与预期结果是否一致