Fixture用途:
1.做测试前后的初始化设置,如测试数据准备,链接数据库,打开浏览器等这些操作都可以使用fixture来实现
2.测试用例的前置条件可以使用fixture实现
Fixture使用:
import unittest def setUpModule(): print(">>>>>>>>>>测试模块开始<<<<<<<<<<") def tearDownModule(): print(">>>>>>>>>>测试模块开始<<<<<<<<<<") class MyTest(unittest.TestCase): @classmethod def setUpClass(cls) -> None: print(‘????测试类开始执行????!‘) def setUp(self) -> None: print(‘♥?♥?测试方法开始执行♥?♥?!‘) def tearDown(self) -> None: print(‘♥?♥?测试方法执行完毕♥?♥?!‘) @classmethod def tearDownClass(cls) -> None: print(‘????测试类执行完毕????!‘) def test_case1(self): print("test_case1") def test_case2(self): print("test_case2") if __name__ == ‘__main__‘: unittest.main()
>>>>>>>>>>测试模块开始<<<<<<<<<< ????测试类开始执行????! ♥?♥?测试方法开始执行♥?♥?! test_case1 ♥?♥?测试方法执行完毕♥?♥?! ♥?♥?测试方法开始执行♥?♥?! test_case2 ♥?♥?测试方法执行完毕♥?♥?! ????测试类执行完毕????! >>>>>>>>>>测试模块开始<<<<<<<<<<在模块的开始于结束时被执行
值得注意的是setUpClass/tearDownClass为类方法,需要通过@classmethod进行装饰。另外方法的参数为cls,cls与self并没有什么本质区别,都只表示方法的第一个参数
封装:
import unittest import warnings from common.base_page import BasePage from common.browser import Browser from common.config_utils import local_config from common.log_utils import logger class SeleniumBaseCase(unittest.TestCase): @classmethod def setUpClass(cls) -> None: logger.info(‘‘) logger.info(‘????测试类开始执行????!‘) warnings.simplefilter(‘ignore‘, ResourceWarning) cls.url = local_config.test_url def setUp(self) -> None: logger.info(‘♥?♥?测试方法开始执行♥?♥?!‘) self.base_page = BasePage(Browser().get_driver()) self.base_page.set_driver() # 封装了代码的隐式等待与浏览器最大化 def tearDown(self) -> None: logger.info(‘♥?♥?测试方法执行完毕♥?♥?!‘) self.base_page.quit_browser() @classmethod def tearDownClass(cls) -> None: logger.info(‘????测试类执行完毕????!‘)
python selenium unittest Fixture(setUp/tearDown)笔记
原文:https://www.cnblogs.com/ClownAlin/p/12864361.html