我正在使用Python 3和unittest模块进行一些简单的硒测试。我想知道是否有办法在每次测试之间不运行tearDown函数?我知道我可以完全从类中省略tearDown,但这不会在每个测试结果上返回结果。另外,如果我要写第一个测试的第二个测试,我会得到一个例外,说明Safari实例已经与另一个WebDriver会话配对。 以下是我目前的代码。在下面的例子中,我基本上编写了第二个测试,其中包含了第一个测试的步骤。这就是我想避免的。
import unittest
from selenium import webdriver
import time
class Login_Tests(unittest.TestCase):
username = 'XXXX'
password = 'XXXX'
def setUp(self):
self.driver = webdriver.Safari()
def test_1_LogIn(self):
driver = self.driver
driver.get('PRIVATE URL')
driver.maximize_window()
driver.find_element_by_id('j_id0:eCommerceSiteTemplate:j_id14:username').send_keys(self.username)
driver.find_element_by_id('j_id0:eCommerceSiteTemplate:j_id14:password').send_keys(self.password, '\n')
time.sleep(4)
element = driver.find_element_by_xpath('//*[@id="globalHeaderNameMink"]/span/text()').text
self.assertIn('Chris GExecutive', element)
def test_2_Store_Load(self):
driver = self.driver
driver.get('PRIVATE URL')
driver.maximize_window()
driver.find_element_by_id('j_id0:eCommerceSiteTemplate:j_id14:username').send_keys(self.username)
driver.find_element_by_id('j_id0:eCommerceSiteTemplate:j_id14:password').send_keys(self.password, '\n')
time.sleep(4)
driver.find_element_by_css_selector(
'#bodyCell > div:nth-child(9) > table > tbody > tr:nth-child(3) > td:nth-child(4) > h2 > a').click()
time.sleep(5)
elem = driver.find_element_by_css_selector(
'body > div.container.hidden-phone.deskLayout > header > div.row-fluid.headerRow > '
'div > div.top_navigation > p > span > span.loginoutsec > a').text
self.assertIn('Logout', elem)
def tearDown(self):
self.driver.close()
self.driver.quit()
if __name__ == "__main__":
unittest.main()
答案 0 :(得分:0)
你真的不想这样做。每项测试都应该是独立的并且是完整的测试。如果您发现在多个测试中重复代码,那么您应该开始使用页面对象模型或创建一些函数,以便您可以增加代码重用。