unittest(一)


unittest 

单元测试框架是受到 JUnit 的启发,与其他语言中的主流单元测试框架有着相似的风格。

其支持测试自动化,配置共享和关机代码测试。支持将测试样例聚合到测试集中,并将测试与报告框架独立。

 

概念 描述

test Fixture

测试的装置,测试前和测试后所需要进行的准备工作,以及所有相关的清理操作
test Case 测试用例 unittest 提供一个基类: TestCase ,用于新建测试用例。
test Suite 是一系列的测试用例,或测试套件,或两者皆有。test suite 可以嵌套 test suite,它可以将很多测试用例打包,然后一起执行。
test Loader 加载测试用例
test Runner 用于执行和输出测试结果的组件。这个运行器可能使用图形接口、文本接口,或返回一个特定的值表示运行测试的结果

 

 

test Fixture 执行顺序

 

 

test Case

定义

  • 测试用例必须要以 test为开头的,可以是模块(module) 、 类(class) 、 方法(method)
  • 以类为主体 需要继承unittest.TestCase类

实例:

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()

 

执行

1、可以用unittest.main() 函数

 

2、也可以使用命令行的形式 ,可以传入模块名、类或方法名或他们的任意组合

python -m unittest test_module1 test_module2
python -m unittest test_module.TestClass
python -m unittest test_module.TestClass.test_method


同样的,测试模块可以通过文件路径指定:
python -m unittest tests/test_something.py

# 可以通过添加 -v 参数获取更详细的信息。
python -m unittest -v test_module

 

3.2 新版功能: 添加命令行选项 -b, -c 和 -f 。
3.5 新版功能: 命令行选项 --locals 。
3.7 新版功能: 命令行选项 -k 。
命令行亦可用于探索性测试,以运行一个项目的所有测试或其子集。

 

参数说明

 

参数 描述
-v 输出详细信息
-b 当测试在运行时,输出的错误信息被缓存在内存中,如果测试运行通过,则释放缓存,如果测试失败,信息就会被打印出来
-c 在测试执行时按下Control-C将会等待当前测试完成并输入所有测试报告。第二次按下Control-C就会触发KeyboardInterrupt异常。
-f 测试一旦出现错误或失败就停止运行
-k 指定对测试名称进行匹配。该匹配是大小写敏感的。包含通配符(*)的模式使用 ,模式对测试加载器导入的测试方法全名进行匹配。
--locals 在异常回溯中打印本地变量信息。

3.2 新版功能: 添加命令行选项 -b, -c 和 -f 。
3.5 新版功能: 命令行选项 --locals 。
3.7 新版功能: 命令行选项 -k 。
命令行亦可用于探索性测试,以运行一个项目的所有测试或其子集。

 

posted @ 2022-05-08 12:44  钟鼎山林  阅读(20)  评论(0编辑  收藏  举报