51Testing软件测试论坛

标题: 测试小白简单聊聊关于UnitTest(一) [打印本页]

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

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

  三、小试牛刀
  1. # 导包
  2. import unittest

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

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

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

  13.     def test_3(self):
  14.         print('this is test3!!!')
  15.    
  16.     def test_2(self):
  17.         print('this is test2!!!')

  18. if __name__ == '__main__':
  19.     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软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2