【发布时间】:2018-01-15 22:44:45
【问题描述】:
我正在使用 Python 3 和 unittest 模块进行一些简单的 selenium 测试。我想知道是否有办法在每次测试之间不运行 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()
【问题讨论】:
标签: python-3.x selenium-webdriver python-unittest