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

使用setUpClassして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()
于 2014-06-13T07:57:22.153 に答える
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 に答える
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 に答える