python unittests定义一个全局webdriver变量

时间:2015-04-03 08:47:09

标签: python selenium-webdriver webdriver python-unittest

我要为webdriver浏览器进行全局设置。 所以,我为所有单元测试写了一个单独的类“设置”,我在其中使用了vars:

class Settings:
 driver = webdriver.Firefox()
 #driver = webdriver.Chrome(r"C:\Users\...\chromedriver.exe")

在我的单元测试中(所有具有相同结构)我以这种方式调用驱动程序:

def setUp(self):
    self.driver = Settings.driver
def test_WebDriverAuthTestIn(self):

    driver = self.driver
    driver.get(lk_url)

def test_name(self):
    some test_logic in browser

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

if __name__ == '__main__':
unittest.main()
然而,在第一次成功的单位测试运行后,其他测试失败了。浏览器无法为下一次测试打开(winerror-10061)。 似乎其他测试也无法运行驱动程序

如果我为每个测试写作

效果很好

driver = webdriver.Firefox()

而不是

self.driver = Settings.driver

1 个答案:

答案 0 :(得分:2)

定义全局webdriver变量通常不是最佳做法,并且您的代码无法正常工作,因为在每次测试之后,驱动程序都会关闭。关闭后,您无法重新打开驱动程序,因此您需要一个新的实例才能进行下一次测试。

class Settings:
  def getDriver():
    return webdriver.Firefox()

def setUp(self):
  self.driver = Settings.getDriver()
def test_WebDriverAuthTestIn(self):

  driver = self.driver
  driver.get(lk_url)

def test_name(self):
  some test_logic in browser

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

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