【问题标题】:How to Conditionally Skip tearDown for Webdriver tests如何有条件地跳过 Webdriver 测试的拆解
【发布时间】: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


    【解决方案1】:

    你真的不想这样做。每个测试都应该是独立的和完整的测试。如果您发现您在多个测试中重复代码,那么您应该开始使用页面对象模型或创建一些函数,以便增加代码重用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-14
      • 2014-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多