unittest.TestCase 子类的子类,使用不同的 setUpClass 类方法
我现在有一个叫做unittest.TestCase的子类,用来运行我的selenium测试:
class FunctionalTest(unittest.TestCase):
@classmethod
def setUpClass(self):
self.browser = webdriver.Firefox()
self.browser.implicitly_wait(1)
@classmethod
def tearDownClass(self):
self.browser.close()
def method1(self):
#some code here
def method2(self):
#some code here
我想在这个类(FunctionalTest)的基础上再创建一个子类,目的是修改setUpClass这个方法,让火狐浏览器禁用javascript,但我还想继续使用FunctionalTest里的其他方法:
@classmethod
def setUpClass(self):
profile = webdriver.FirefoxProfile()
profile.set_preference("javascript.enabled", False);
self.browser = webdriver.Firefox(profile)
self.browser.implicitly_wait(1)
像下面这样创建子类并没有成功:
FunctionalTestNoJS(FunctionalTest):
@classmethod
def setUpClass(self):
profile = webdriver.FirefoxProfile()
profile.set_preference("javascript.enabled", False);
self.browser = webdriver.Firefox(profile)
self.browser.implicitly_wait(1)
有没有什么好主意可以有效地实现这个目标?
1 个回答
0
这个对我有效,我不太确定为什么要用@classmethod,但就这样吧..
import unittest
from selenium import webdriver
from datetime import datetime
class FunctionalTest(unittest.TestCase):
def setUp(self):
self.browser = webdriver.Firefox()
self.browser.implicitly_wait(1)
self.browser.maximize_window()
def tearDown(self):
self.browser.quit()
def test_method1(self):
self.browser.get("http://javatester.org/javascript.html")
now = datetime.now().strftime('%Y-%m-%d_%H-%M-%S-%f')
self.browser.get_screenshot_as_file('%s_%s.png' % (self.__class__.__name__, now))
class FunctionalTestNoJS(FunctionalTest):
def setUp(self):
profile = webdriver.FirefoxProfile()
profile.set_preference("javascript.enabled", False);
self.browser = webdriver.Firefox(profile)
self.browser.implicitly_wait(1)
self.browser.maximize_window()
if __name__ == '__main__':
unittest.main()