python selenium多个测试用例

时间:2012-06-15 11:06:41

标签: python firefox testing selenium

我在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()

我的问题是在函数test_home_page之后,firefox实例关闭并再次为下一个test_whatever函数打开。我怎么能这样做,以便所有的测试用例都是从同一个firefox实例执行的。

6 个答案:

答案 0 :(得分:6)

通常您希望浏览器在测试之间关闭,以便您使用干净缓存,localStorage,历史数据库等启动每个测试。在测试之间关闭浏览器确实会减慢测试速度,但它会节省调试时间,因为测试不会与浏览器缓存和先前测试的历史记录进行交互。

答案 1 :(得分:2)

__init__中初始化firefox驱动程序:

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()

答案 2 :(得分:2)

使用setUpClasstearDownClass

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()

答案 3 :(得分:1)

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()) 

使用相同的Firefox实例运行许多测试用例。 顺便说一句,我有一个问题希望有人能够知道并回答我。 我怎么能在不同的浏览器中执行相同的测试用例?

答案 4 :(得分:0)

我认为WebDriver Plus可以解决您的问题。这里是。 http://webdriverplus.org/en/latest/browsers.html 您可以使用此方法在所有单元测试中重复使用相同的浏览器实例。

答案 5 :(得分:0)

setUpClasstearDownClass@classmethod装饰器一起使用。