【问题标题】:how can i use the driver init in the setupModule我如何在 setupModule 中使用驱动程序初始化
【发布时间】:2019-04-03 05:00:20
【问题描述】:

当我在 python3 中使用 unittest 时,我尝试过这样:

import unittest
from selenium import webdriver

def setupModule():
    driver = webdriver.Firefox
    driver.maximize_window()
    driver.get('www.google.com')

def teardownModule():
    driver.close()

class test_01(unittest.TestCase):
    def setUp(self):
        driver.xxxx

    def tearDown(self):
        driver.xxxx

    def test_0001(self):
        driver.yyyy

    def test_0002(self):
        driver.zzzz

class test_02(unittest.TestCase):
    def setUp(self):
        driver.xxxx

    def tearDown(self):
        driver.xxxx

    def test_0001(self):
        driver.yyyy

    def test_0002(self):
        driver.zzzz

类中的驱动程序和 teardownModule 无法识别。有没有办法让它可用?

我不想把driver = webdriver.Firefox 放在def 之外,就好像我有2 个针对不同情况的py 文件一样,它会首先初始化2 个或更多的firefox 打开,也不会运行该文件中的案例,它将导致该浏览器始终打开。

【问题讨论】:

  • 关于 webdriver 实例化,它是否必须在模块范围内?通常,人们会在类或函数范围内这样做
  • 如果一个页面有很多功能。我想为不同的功能创建许多类,所以我需要一个通用的初始化类,模块设置和拆卸是最好的方法。

标签: selenium selenium-webdriver python-unittest


【解决方案1】:

我建议有一个基类来处理 webdriver 设置和拆卸,即:

class BaseTest(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox

    def tearDown(self):
        self.driver.quit()

class test_01(BaseTest):
    def test_0001(self):
        self.driver.xxx

class test_02(BaseTest):
    def test_0002(self):
        self.driver.xxx

【讨论】:

  • 知道了。这个对我有用。我改用setupclass 方法。谢谢。
猜你喜欢
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
  • 2012-09-04
  • 1970-01-01
  • 2015-09-09
  • 2014-05-30
  • 1970-01-01
  • 2020-02-23
相关资源
最近更新 更多