📅  最后修改于: 2020-12-03 05:26:35             🧑  作者: Mango
“ unittest”支持测试自动化,共享测试的设置和关闭代码,将测试聚合到集合中以及使测试脱离报告框架。
unittest模块提供的类可轻松支持一组测试的这些质量。
为此,unittest支持以下重要概念-
测试装置-这表示执行一个或多个测试所需的准备工作,以及任何相关的清理操作。例如,这可能涉及创建临时或代理数据库,目录或启动服务器进程。
测试用例-这是最小的测试单元。这将检查对一组特定输入的特定响应。 unittest提供了一个基类TestCase ,可用于创建新的测试用例。
测试套件-这是测试用例,测试套件或两者的集合。这用于汇总应一起执行的测试。测试套件由TestSuite类实现。
测试运行程序-这是协调测试执行并向用户提供结果的组件。跑步者可以使用图形界面,文本界面,或返回特殊值以指示执行测试的结果。
编写简单的单元测试涉及以下步骤-
步骤1-将unittest模块导入程序中。
步骤2-定义要测试的函数。在以下示例中,将对add()函数进行测试。
步骤3-通过子类化unittest.TestCase创建一个测试用例。
步骤4-将测试定义为类中的方法。方法名称必须以“ test”开头。
步骤5-每个测试调用TestCase类的assert函数。断言有很多类型。以下示例调用assertEquals()函数。
第6步-assertEquals()函数将add()函数与arg2参数进行比较,如果比较失败,则抛出assertionError。
步骤7-最后,从unittest模块调用main()方法。
import unittest
def add(x,y):
return x + y
class SimpleTest(unittest.TestCase):
def testadd1(self):
self.assertEquals(add(4,5),9)
if __name__ == '__main__':
unittest.main()
步骤8-从命令行运行以上脚本。
C:\Python27>python SimpleTest.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
步骤9-以下三个可能是测试的可能结果-
Sr.No | Message & Description |
---|---|
1 |
OK The test passes. ‘A’ is displayed on console. |
2 |
FAIL The test does not pass, and raises an AssertionError exception. ‘F’ is displayed on console. |
3 |
ERROR The test raises an exception other than AssertionError. ‘E’ is displayed on console. |
这些结果分别在控制台上以“。”,“ F”和“ E”显示。
可以从命令行使用unittest模块来运行单个或多个测试。
python -m unittest test1
python -m unittest test_module.TestClass
python -m unittest test_module.TestClass.test_method
unittest支持以下命令行选项。有关所有命令行选项的列表,请使用以下命令-
Python –m unittest -h
Sr.No | Option & Description |
---|---|
1 |
-h, –help Show this message |
2 |
v, –verbose Verbose output |
3 |
-q, –quiet Minimal output |
4 |
-f, –failfast Stop on first failure |
5 |
-c, –catch Catch control-C and display results |
6 |
-b, –buffer Buffer stdout and stderr during test runs |