Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python单元测试定义一个全局webdriver变量_Python_Selenium Webdriver_Webdriver_Python Unittest - Fatal编程技术网

python单元测试定义一个全局webdriver变量

python单元测试定义一个全局webdriver变量,python,selenium-webdriver,webdriver,python-unittest,Python,Selenium Webdriver,Webdriver,Python Unittest,我会为webdriver浏览器做一个全局设置。 因此,我为所有单元测试编写了一个单独的类“Settings”,其中使用了两个变量: class Settings: driver = webdriver.Firefox() #driver = webdriver.Chrome(r"C:\Users\...\chromedriver.exe") 在我的单元测试(所有测试都具有相同的结构)中,我以以下方式调用驱动程序: def setUp(self): self.driver = Set

我会为webdriver浏览器做一个全局设置。 因此,我为所有单元测试编写了一个单独的类“Settings”,其中使用了两个变量:

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()
但是,其他测试在第一次成功的unittest运行后失败。浏览器无法为下一个测试打开(winerror-10061)。 似乎其他测试也不能运行驱动程序

如果我为每个测试编写代码,效果会很好

driver = webdriver.Firefox()
而不是

self.driver = Settings.driver

定义一个全局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()