unittest 单元测试

Posted zhoulixiansen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unittest 单元测试相关的知识,希望对你有一定的参考价值。

unittest 单元测试:

    1,单元测试是指对软件中最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来讲,要根据实际情况去判定其具体含义。

    2,unitest=TestCase + TestResult  执行 + 结果

    3,首先使用import unitest

    4,测试的类都是继承于TestCase类

    5, setUp()测试前的初始化工作;tearDown()测试后的清除工作(在每个测试方法运行时被调用)

    注意:

         1,所有类中方法入参为self,定义方法的变量也要“self.变量”(熟悉python的写法其实就是类变量的调用)

         2,定义测试用例,以“test”开头命名的方法,方法的入参为self

         3,unitest.main()方法会搜索该模块下所有的以test开头的测试用例方法,并且自动执行它们

         4,成功会输出,失败是F

先看一个例子:

# -*- coding:UTF-8 -*-
__autor__ = zhouli
__date__ = 2018/11/7 21:15

import unittest


class UserTestCase(unittest.TestCase):
    def setUp(self):
        print("--setup--")

    def tearDown(self):
        print("--tearDown--")

    def test_name(self):
        print(--name--)


if __name__ == __main__:
    unittest.main()

运行的结果为:

.
--setup--
----------------------------------------------------------------------
--name--
Ran 1 test in 0.000s
--tearDown--

OK

可以看到的顺序是先执行setup方法之后,再去执行自定义的测试方法,最终使用tearDown来进行收尾

再看补充,因为在unitest中必须以test_开头来定义方法,因此新增几个方法。

# -*- coding:UTF-8 -*-
__autor__ = zhouli
__date__ = 2018/11/7 21:15

import unittest


class UserTestCase(unittest.TestCase):
    def setUp(self):
        print("--setup--")

    def tearDown(self):
        print("--tearDown--")

    def test_name(self):
        print(--name--)

    def test_isupper(self):
        print(--upper)

    def test_age(self):
        print(--age)


if __name__ == __main__:
    unittest.main()

执行的结果为:

--setup--
...
--age
----------------------------------------------------------------------
--tearDown--
Ran 3 tests in 0.000s
--setup--

--upper
OK
--tearDown--
--setup--
--name--
--tearDown--

也就是说,每一个自定义方法开始会调用setup,然后调用自定义方法,然后调用tearDown方法

# -*- coding:UTF-8 -*-
__autor__ = zhouli
__date__ = 2018/11/7 21:15

import unittest


class UserTestCase(unittest.TestCase):
    def setUp(self):
        print("--setup--")

    def tearDown(self):
        print("--tearDown--")

    def test_name(self):
        self.assertEqual(foo.upper(), "FoO", msg=转换不对)  # msg=是报错之后的提示信息
        print(--name--)

    def test_isupper(self):
        print(--upper)

    def test_age(self):
        print(--age)


if __name__ == __main__:
    unittest.main()

结果如下:

--setup--
..F
--age
======================================================================
--tearDown--
FAIL: test_name (__main__.UserTestCase)
--setup--
----------------------------------------------------------------------
--upper
Traceback (most recent call last):
--tearDown--
  File "C:/Users/lenovo/Desktop/新建文件夹/自动化测试selenium/unitest_import.py", line 16, in test_name
--setup--
    self.assertEqual(foo.upper(), "FoO", msg=转换不对)  # msg=是报错之后的提示信息
--tearDown--
AssertionError: FOO != FoO
- FOO
?  ^
+ FoO
?  ^
 : 转换不对

----------------------------------------------------------------------
Ran 3 tests in 0.000s

FAILED (failures=1)

三个test失败1个,报错信息为转换不对,总体结论为..F

 测试套件TestSuite介绍:

  需求:

     1,利用unitest执行流程测试而非单元测试

     2,控制unitest的执行顺序

 

以上是关于unittest 单元测试的主要内容,如果未能解决你的问题,请参考以下文章

IOS-使用XCODE自带的单元测试UnitTest

unittest单元测试框架

单元测试--unittest

Python单元测试--unittest

Python单元测试-Unittest

Python单元测试框架:unittest