5

我在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 实例中执行。

4

6 回答 6

7

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

于 2012-06-15T13:04:26.087 回答
3

初始化 Firefox 驱动程序__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()
于 2012-06-15T13:00:59.813 回答
3

使用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()
于 2014-06-13T07:57:22.153 回答
0
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 实例运行多个测试用例。顺便说一句,我有一个问题希望有人能知道并回答我。我如何在不同的浏览器中执行相同的测试用例?

于 2013-01-28T02:47:46.840 回答
0

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

于 2013-02-08T05:59:51.017 回答
0

setUpClass与装饰器tearDownClass一起使用。@classmethod

于 2019-03-08T13:31:31.813 回答