稍等片刻,正在加载中...

unittest之入门

介绍

unittestpython的单元测试框架。

测试脚手架
test fixture表示为了开展一项或多项测试所需要进行的准备工作,以及所有相关的清理操作。举个例子,这可能包含创建临时或代理的数据库、目录,再或者启动一个服务器进程。

测试用例
一个测试用例是一个独立的测试单元。它检查输入特定的数据时的响应。 unittest提供一个基类:TestCase ,用于新建测试用例。

测试套件
test suite是一系列的测试用例,或测试套件,或两者皆有。它用于归档需要一起执行的测试。

测试运行器
test runner是一个用于执行和输出测试结果的组件。这个运行器可能使用图形接口、文本接口,或返回一个特定的值表示运行测试的结果。

需要遵守的规则

  • 测试文件必须导入unittest
  • 测试类必须继承自unittest.TestCase
  • 测试方法名必须以test开头。

断言的语法

假设:a='zhenzi0322'b='ZHENZI0322'。其中假就是False,真就是True通过的意思就是测试通过。反之测试不通过

断言 描述 示例
assertFalse 测试某个值是否为假。 assertFalse(a.isupper())通过。
assertTrue 测试某个值是否为真。 assertTrue(b.islower())不通过。
assertEqual 测试两个值是否相等。 assertEqual(a, b)不通过。

简单示例

test01.py文件内容如下:

import unittest

class TestStringMethods(unittest.TestCase):

    def test_login(self):
        print('执行了test_login')
        a = 'zhenzi0322'.upper()
        b = 'ZHENZI0322'
        self.assertEqual(a, b)

    def testDemo(self):
        print("执行了testDemo")
        a = 'zhenzi0322'
        self.assertTrue(a.isupper())


if __name__ == '__main__':
    unittest.main()

运行test01.py文件后输出如下:

F.
======================================================================
FAIL: testDemo (__main__.TestStringMethods)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "F:/Python/opencv_demo/test2.py", line 15, in testDemo
    self.assertTrue(a.isupper())  # 测试变量a的值是否是全大写的
AssertionError: False is not true

----------------------------------------------------------------------
Ran 2 tests in 0.001s

FAILED (failures=1)
执行了testDemo
执行了test_login

解释:
上面的测试类中的有一个地方没有测试通过,那就是在testDemo这个方法中的测试内容没有通过。原因是因为a变量的值不是大写的字母造成的。如果把testDemo方法中的a变量的值改成ZHENZI0322再运行test01.py就会发现测试通过了。输出如下:

..
----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK
执行了testDemo
执行了test_login
posted @ 2021-12-15 22:30  一切皆往事  阅读(63)  评论(0)    收藏  举报