zoukankan      html  css  js  c++  java
  • Python_selenium PO模式下 Tesecase 的相同执行代码做成selenium_base_case公共模块及调用

    作用:

    PO模式下 Tesecase 的相同执行代码做成selenium_base_case公共模块及调用,提高代码简洁度,实现同样效果。

    框架结构:

    代码简单实践:

    common模块下 selenium_base_case.py :

    #coding=gbk
    import unittest
    from common.base_page import BasePage
    from common.set_driver import set_driver
    from common.config_utils import config

    class SeleniumBaseCase(unittest.TestCase):

    def setUp(self) -> None:
    self.base_page = BasePage(set_driver())
    self.base_page.set_browser_max()
    self.base_page.implicitly_wait()
    self.base_page.open_url(config.get_url)

    def tearDown(self) -> None:
    self.base_page.close_tab()

    login模块对该方法进行调用,并希望在自己的初始化中单独增加内容可如下操作:

    #coding=gbk
    import unittest
    from common.set_driver import set_driver
    from common.base_page import BasePage
    from actions.login_action import LoginAction
    from common.config_utils import config
    from common.selenium_base_case import SeleniumBaseCase #引入公共模块下的SeleniumBaseCase类

    class LoginTest(SeleniumBaseCase):
    #希望再增加初始化代码:
    def setUp(self) -> None:
    super().setUp()
    print('hello,我是执行公共的setup后再增加执行的')

    def test_login_success(self):
    login_action = LoginAction( self.base_page.driver )
    main_page = login_action.login_success('admin','201314ANQIER1')
    actual_result = main_page.get_username()
    self.assertEqual(actual_result,'admin','test_login_success用例执行失败')

    main测试模块调用,直接使用公共初始化即可,那么代码可编写如下:

    #coding=gbk
    import unittest
    from common.set_driver import set_driver
    from common.base_page import BasePage
    from actions.login_action import LoginAction
    from actions.quit_action import QuitAction
    from common.config_utils import config
    from common.selenium_base_case import SeleniumBaseCase

    class QuitTest(SeleniumBaseCase): #直接写案例即可

    def test_quit(self):
    login_action = LoginAction(self.base_page.driver)
    main_page = login_action.default_login()
    main_page.wait(3)
    print("登录成功")
    quit_action = QuitAction( main_page.driver )
    login_page = quit_action.quit()
    actual_result = login_page.get_title()
    print(actual_result)
    self.assertEqual( actual_result.__contains__('用户登录'),True,'test_quit用例不通过' )

    if __name__=='__main__':
    unittest.main()

    实现原理:

    SeleniumBaseCase   为 所有XX.test.py 的父类类 。

    unittest.TestCase   为SeleniumBaseCase   类的父类,所以XX.test.py  通过集成SeleniumBaseCase    类间接也集成了unittest.TestCase  类。

  • 相关阅读:
    推送消息为什么使用RocketMQ,而不使用Kafka?
    com.google.common.collect.Lists.addAll()空指针原因分析
    AQS原理
    ReentrantLock-加锁
    ReentrantLock-自旋
    Reentrantlock-的核心内容
    java中,BigDecimal的add方法避坑指南
    Reentrantlock-实现原理
    Reentrantlock-适用场景
    JAVA foreach和普通for循环是否需要判断为null
  • 原文地址:https://www.cnblogs.com/123anqier-blog/p/12846805.html
Copyright © 2011-2022 走看看