это потому, что вы устанавливаете self.browser
каждый раз, когда звоните setUp
или more_loggin
.
это означает, что если вы вызываете одну функцию, скажем, setUp()
, а затем вызываете more_loggin
, вы теряете экземпляр Firefox
, созданный setUp
, и self.browser
получает новый экземпляр, созданный на начало more_loggin
.
когда вы вызываете tearDown
, закрывается только последний экземпляр, который хранится в self.browser
, а все остальные остаются открытыми.
Я предлагаю вам сохранить все экземпляры в списке, определенном на уровне класса, а затем tearDown
должен выполнить итерацию по каждому экземпляру и закрыть его.
class Login(unittest.TestCase):
instances = []
site_url1 = "https://www.google.com/"
site_url2 = "https://www.facebook.com/"
def openFirefox(self):
# create a new Firefox session
firefox = webdriver.Firefox()
# save session in instances
self.instances.append(firefox)
# return the session
return firefox
def setUp(self):
browser = self.openFirefox()
browser.open(self.site_url1)
def more_loggin(self):
browser = self.openFirefox()
browser.open(self.site_url2)
def tearDown(self):
for browser in self.instances:
# close every instance in instances
browser.quit()