简单聊一聊关于UnitTest的二三事(一)

上一篇 / 下一篇  2021-05-26 09:35:07 / 个人分类:单元测试

一、概念
UnitTest是Python标准库中自带的一个模块,类似于Java中的Junit单元测试框架,其模块提供了许多类和方法处理各种测试工作,能够完善结合Selenium、Appium、Request等实现UI自动化与接口自动化。

在学习之前,我们首先要了解几个概念:
--TestCase:测试用例,一个完整的测试流程就是一个测试用例,通过一些特定的输入得到相应,并对结果进行校验的过程,所有的用例都是直接继承于unitTest.TestCase类,TestCase是最小的测试单元,具有独立性。
--TestFixture:测试固件,在执行测试之前的准备工作,比如数据清理、创建临时数据库、目录、以及开启某些服务进程。在编写测试代码时,总会有一些重复的代码部分,比如测试一个网站的登录操作时,简单分为三个用例:账号和密码都正确,账号正确密码错误,账号错误密码正确,这三种情况在执行用例时都需要首先访问系统地址,再输入账号和密码,点击登录操作,完成之后浏览器执行关闭操作,我们就可以通过setUp()将访问地址作为前置条件,通过tearDown()将关闭浏览器作为后置条件。测试固件就是整合了代码的公共部分。
--TestSuite:测试套件,把多个测试用例集合到一起,而测试套件和测试用例一样,也可以有多个,并且可以组合在一起形成更多的测试用例集合。
--TestRunner:测试运行器,提供测试用例运行环境,通过run()方法来执行测试用例,并在执行完成后将测试结果输出。unittest框架的TextTextRunner()类,通过该类下面的run()方法来运行suite所组装的测试用例,入参为suite测试套件。

二、UnitTest环境搭建
Python安装时就已经默认封装好了UnitTest框架,调用框架的时候只需要import unittest即可。

三、小试牛刀
# 导包
import unittest

class UnitForTest(unittest.TestCase):
    # 前置条件
        def setUp(self) -> None:
        print('this is setUp')

    # 后置条件
    def tearDown(self) -> None:
        print('this is tearDown')

    # 定义测试用例
    def test_1(self):
        print('this is test1!!!')

    def test_3(self):
        print('this is test3!!!')
    
    def test_2(self):
        print('this is test2!!!')

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

运行结果:

如上图运行结果所示,setUp()会在每个单独的测试用例运行之前都执行一次,tearDown()会在每个单独的测试用例运行之后都执行一次。
与setUp()和tearDown()类似的方法还有setUpClass()和tearDownClass(),setUpClass()在每个类执行前调用一次,tearDownClass()在每个类执行后调用一次,使用这两个方法时必须加 @classmethod 装饰器。
UnitTest的语法规则:
(1) UnitTest中,所有的用例类都是直接继承于unitTest.TestCase类;
(2)UnitTest中,测试用例的定义都是以test_开头;
(3)用例的运行顺序与代码中编写的顺序无关,运行顺序遵循A-Z,a-z,0-9;
(4)单个测试类运行时必须有 unittest.main()方法。


TAG: uninttest

 

评分:0

我来说两句

Open Toolbar