TA的每日心情 | 无聊 10 小时前 |
---|
签到天数: 1052 天 连续签到: 2 天 [LV.10]测试总司令
|
一、概念
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即可。
三、小试牛刀- # 导包
- 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()方法。
|
|