Reputation: 1328
I have the following code in python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from unittestzero import Assert
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import ElementNotVisibleException
import unittest, time, re
class HomePageTest(unittest.TestCase):
expected_title=" some title here "
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = "https://somewebsite.com"
self.verificationErrors = []
def test_home_page(self):
driver=self.driver
driver.get(self.base_url)
print "test some things here"
def test_whatever(self):
print "test some more things here"
def tearDown(self):
self.driver.quit()
if __name__ == "__main__":
unittest.main()
My problem is after the function test_home_page, the firefox instance closes and opens again for the next test_whatever function. How can I do his so that all the test cases are executed from the same firefox instance.
Upvotes: 5
Views: 11596
Reputation: 91
use setUpClass
and tearDownClass
class HomePageTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.driver = webdriver.Firefox()
def setUp(self):
self.base_url = "https://somewebsite.com"
self.verificationErrors = []
def tearDown(self):
self.driver.get(self.base_url)
@classmethod
def tearDownClass(cls):
cls.driver.quit()
if __name__ == "__main__":
unittest.main()
Upvotes: 3
Reputation: 27
def suite():
suite = unittest.TestSuite()
suite.addTest(HomePageTest("test_home_page"))
suite.addTest(HomePageTest("test_whatever"))
return suite
if __name__ == "__main__":
unittest.TextTestRunner().run(suite())
Run many testcase with the same Firefox instance. Btw, i have a question hope someone could know it and answer to me. How could i execute the same testcase in different browsers?
Upvotes: 0
Reputation: 1
I think WebDriver Plus solves your problem. Here it is. http://webdriverplus.org/en/latest/browsers.html You can reuse the same browser instance across all unit tests using this .
Upvotes: 0
Reputation: 683
Usually you want the browser to close between tests so that you start each test with a clean cache, localStorage, history database, etc. Closing the browser between tests does slow down the tests, but it saves in debug time because a test doesn't interact with the browser cache and history of a previous test.
Upvotes: 8
Reputation: 9509
Initialize the firefox driver in __init__
:
class HomePageTest(unittest.TestCase):
def __init__(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = "https://somewebsite.com"
self.verificationErrors = []
...
def tearDown(self):
self.driver.quit()
Upvotes: 3