[英]Is it possible to login once for all LiveServerTestCases?
I would like to do something like this:我想做这样的事情:
class TestSuite(LiveServerTestCase):
@classmethod
def setUp(self):
self.driver = webdriver.Chrome()
# Login User
self.driver.get(self.live_server_url + '/somesite/login/')
self.driver.find_element(By.ID, "username").click()
self.driver.find_element(By.ID, "username").send_keys("foo")
self.driver.find_element(By.ID, "password").click()
self.driver.find_element(By.ID, "password").send_keys("bar")
self.driver.find_element(By.ID, "login_button").click()
# Redirects to home page
@classmethod
def tearDown(self):
self.driver.quit()
def test_foo(self):
# Do some clicking with already logged in user from home page
def test_bar(self):
# Do some clicking with already logged in user from home page
I just feel it is inefficient to call setUp() on every test case.我只是觉得在每个测试用例上调用 setUp() 效率低下。
Any help would be appreciated, thanks...任何帮助将不胜感激,谢谢...
所以将setUp
从TestSuite
移动到LiveServerTestCase
类
I hate to answer my own question... but I got it working thanks to olli_kahn's hint - extending LiveServerTestCase
.我不想回答我自己的问题……但由于 olli_kahn 的提示 - 扩展了LiveServerTestCase
我让它工作了。
Steps:脚步:
setUpClass
/ tearDownClass
(not setUp
/ tearDown
)使用setUpClass
/ tearDownClass
(不是setUp
/ tearDown
)setUpClass
/ tearDownClass
as @classmethods
(put @classmethod
first if using more decorators)将setUpClass
/ tearDownClass
声明为@classmethods
(如果使用更多装饰器, @classmethod
放在首位)super()
to extend LiveServerTestCase
使用super()
扩展LiveServerTestCase
cls
instead of self
for @classmethod
's to conform to PEP8对@classmethod
使用cls
而不是self
以符合 PEP8Complete code:完整代码:
class TestSuite(LiveServerTestCase):
@classmethod
def setUpClass(cls):
super(TestSuite, cls).setUpClass()
cls.driver = webdriver.Chrome()
# Login User
cls.driver.get(cls.live_server_url + '/somesite/login/')
cls.driver.find_element(By.ID, "username").click()
cls.driver.find_element(By.ID, "username").send_keys("foo")
cls.driver.find_element(By.ID, "password").click()
cls.driver.find_element(By.ID, "password").send_keys("bar")
cls.driver.find_element(By.ID, "login_button").click()
# Redirects to home page
@classmethod
def tearDownClass(cls):
cls.driver.quit()
super(TestSuite, cls).tearDownClass()
def test_foo(self):
# Do some clicking with already logged in user from home page
def test_bar(self):
# Do some clicking with already logged in user from home page
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.