Python UnitTest 文档中文翻译-0-1(渣翻自娱)
来源:互联网 发布:安卓贪吃蛇大作战源码 编辑:程序博客网 时间:2024/05/16 17:28
写在前面:
渣翻自娱,暑期实习项目django(drf),想学一下单元测试,没看到中文的,正好周末,闲来无事,渣翻渣翻,学习学习,欢迎大佬们指正小弟。
unittest — 单元测试框架
概述
(如果你已经熟悉基本的测试,可以直接去看assert方法列表)
Py的单元测试框架通常会指做 PyUnit,JUnit(java)的Py版本
unittest支持自动化测试:共享 setup shutdown 测试方法代码, 测试代码集成,独立测试报告生成
unittest提供了一系列的类使测试变得更简单
unittest支持这些重要的概念:
测试 fixture :
执行测试所需的准备,以及测试结束的关联清理工作。例如:创建临时或代理数据库、目录、服务器进程
测试用例(case):
用例测试是最小的单元测试。它检查一个具体的输入带来的响应(response)。unittest提供一个基类(BaseClass):TestCase 用来创建新的测试用例。
测试suite :
测试suite可能是测试用例的集合或者测试suite的集合,或者都有。它用来聚合应该一起被执行的测试
测试runner
测试runner是协调测试运行结果和向用户提供结果的重要部分。runner可以使用图形界面接口,或者文本接口,或者返回一个特定值来确认测试执行结果。
用例测试和fixture测试是通过TestCase类和FunctionTestCase类分别支持的。前者应该在创建新测试时使用,后者可以在集成现有的测试代码和一个unittest-driven框架时使用。
当测试fixture时继承TestCase类时,setup() teardown()方法可以被重写来为fixture提供初始化和结束清理操作。
使用FunctionTestCase时,可以将现有的函数传递给构造函数。测试运行时,fixture初始化首先被运行。如果成功了,清除(cleanup)方法会在测试被执行完后执行,而且不会被测试的结果所影响。
每一个TestCase只会运行一个测试方法,所以每个测试都要创建一个新的fixture。
测试suite是由TestSuit类实现。这个类允许单独的测试或者suite测试执行。当执行这个suite测试时,所有的测试直接就被加到suite中,然后在子测试suite中运行。
测试runner只提供了一个run()方法,参数是一个TestCase或者TestSuite对象,并返回一个结果对象(TestResult)。
unittest将TextTestRunner作为一个示例测试runner。它在默认情况下返回标准错误流的测试结果。
可替代的runner也能够在其他环境中(图形用户界面)实现,而并不需要从特定的类中派生出来。
25.3.1基本例子
unittest模块提供了一系列的工具来构建或者运行测试。这部分演示了一小部分工具足够满足大多数用户的需求。
接下来是一个测试字符串方法的小脚本。
import unittestclass TestStringMethods(unittest.TestCase): // 继承TestCase def test_upper(self): self.assertEqual('foo'.upper(), 'FOO')// upper def test_isupper(self): self.assertTrue('FOO'.isupper()) // 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__': // main unittest.main()
一个testcase是由unittest.TestCase创建的。 三个单独的测试的名字都是以test开头定义的。这个命名约定告诉runner 哪些方法代表测试。
每个测试的关键是通过assertEqual()来检查预期的结果;assertTrue、assertFalse用来验证一个条件;assertRaises用来验证一个具体的异常是否被抛出。这些方法用来代替assert语句,所以runner就能够积累所有测试结果然后生成报告。
setUp() tearDown()方法用来允许你定义在每个测试执行前和之后要执行的指令。这两个方法之后会更详细的讨论。
上述代码最后的程序块显示了一种简单的运行测试的方法。unittest.main() 提供了一个命令行接口给测试脚本。当从命令行执行时,输出接口如下
...----------------------------------------------------------------------Ran 3 tests in 0.000sOK
还有其他的方法可以代替unittest。.main()
suite = unittest.TestLoader().loadTestsFromTestCase(TestStringMethods)unittest.TextTestRunner(verbosity=2).run(suite)
结构如下:
test_isupper (__main__.TestStringMethods) ... oktest_split (__main__.TestStringMethods) ... oktest_upper (__main__.TestStringMethods) ... ok----------------------------------------------------------------------Ran 3 tests in 0.001sOK
上面的示例展示了最常用的unittest特性,这些特性足以满足许多日常测试需求。
- Python UnitTest 文档中文翻译-0-1(渣翻自娱)
- Python UnitTest 文档中文翻译-2-3(渣翻自娱)
- Python UnitTest 文档中文翻译-4(渣翻自娱)
- Python UnitTest 文档中文翻译-5-6(渣翻自娱)
- Python UnitTest 文档中文翻译-7(渣翻自娱)
- Python unittest 官方文档
- EasyTouch5中文翻译文档(我自己翻译的,不是机翻),如有错漏请@我更正纠错
- 自娱
- OAUTH2.0官方文档中文翻译
- NodeMCU文档中文翻译 1 概要
- hadoop2官方文档中文翻译(1)---Apache Hadoop 2 简介
- python unittest
- Python unittest
- python unittest
- python unittest
- python unittest
- Python unittest
- python进阶之Unittest简介(1)
- List<JSONObject>和JSONArray
- 《飞猪规则》 第六章 用车类商品发布规范
- Android数据库GreenDao2.1使用和缺陷
- 非必要不提供默认构造函数
- 递归之八皇后问题
- Python UnitTest 文档中文翻译-0-1(渣翻自娱)
- linux上操作mysql数据库
- Laravel授权原理讲解第二部分
- eBay里Elasticsearch集群的生命周期
- Cows poj2481 树状数组应用
- [bzoj3687]简单题 bitset
- 《飞猪规则》 第八章 国外景点门票类商品发布规范
- Linux用vim/vi给文件加密和解密
- 软件评测师and系统分析师考试总结