python selenium3 - unittest单元测试框架介绍(6)
1. 单元测试
unittest:python自带,最基础的单元测试框架
单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。
2. 重要概念
Unittest的工作原理:写好TestCase——>TestLoader加载TestCase到TestSuite中——>TextTestRunner运行TestSuite,运行结果保存在TextTestResult中
单元测试框架unittest–实例
Test Fixture 对一个测试用例环境的搭建和销毁,就是一个Fixture,通过覆盖TestCase的setUP()和tearDown()方法来实现
TestCase 测试用例
TestLoader 是用来加载TestCase到TestSuite中的
TestRunner 是来执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息
TestSuite 多个测试用例集合在一起,就是TestSuite
注:测试用例的执行顺序可以由测试套件的添加顺序控制,而main()方法只能按照测试类、方法的名称来执行测试用例
3. 断言方法
assertEqual(a, b)判断a==b
assertNotEqual(a, b)判断a!=b
assertTrue(x) bool(x) is True
assertFalse(x)bool(x) is False
assertIs(a, b) a is b
assertIsNot(a, b) a is not b
assertIsNone(x) x is None
assertIsNotNone(x) x is not None
assertIn(a, b)a in b
assertNotIn(a, b) a not in b
assertIsInstance(a, b) isinstance(a, b)
assertNotIsInstance(a, b) not isinstance(a, b)
4. discover方法
discover(start_dir, pattern ='test *.py', top_level_dir = None )
1. start_dir:要测试的模块名或测试用例目录;
2. pattern='test*.py':表示用例文件名的匹配原则,下面的例子中匹配文件名为以“test”开头的“.py”文件,星号“*”表示任意多个字符;
3. top_level_dir=None:测试模块的顶层目录,如果没有顶层目录,默认为None;
相比于addTest()方法,discover()方法更方便高效,也可以提高测试反馈速率。
PS:使用discover()方法,切记测试用例中需要执行的测试方法必须以test开头,否则无法加载!!!
5.用例执行顺序
unittest框架默认根据ACSII码的顺序加载测试用例,数字与字母的顺序为:0~9,A~Z,a~z
- 1. 方式1-通过TestSuite类的addTest方法,按顺序加载测试用例
- 2. 方式2-通过修改函数名的方式:https://www.cnblogs.com/songzhenhua/p/9690198.html
6. 执行多级目录执行
- 执行多级目录,只需要在每个子目录下面添加__init__文件即可
7. 装饰器
unittest.skip(原因) 无条件的跳过测试
unittest.skipIf(条件, 原因) 如果条件为真,就跳过测试;否则执行测试
unittest.skipUnless(条件, 原因) 如果条件为真,就执行测试;否则跳过测试
unittest.expectedFailure 预期失败。执行结果失败,pass;执行结果成功,fail
8. Fixtures
除了用例的fixtures,unittest还提供了更大范围的fixtures,如针对模块和类的
- 1. setUpModule/tearDownModule:在整个模块的开始于结束是被执行
- 2. setUpClass/earDownClass:在测试类的开始与结束时被执行
- 3. setUp/tearDown:在测试用例的开始与结束时被执行
- 注:cls.driver和 self.driver的区别使用