测试小白简单聊聊关于UnitTest(一)

发表于:2021-6-03 09:32

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:喜欢看海的测试小白    来源:掘金

  一、概念
  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()方法。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号