Python和Selenium,从另一个调用一个测试

时间:2015-10-08 13:46:44

标签: python selenium

温柔地对待我,我不是程序员!刚开始使用Selenium进行一些测试,我想要做的是回收代码,所以我不必重复和维护它。所以我有以下,完美的工作;

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
from mappings.home_mapping import *
from common.config import uname, pswd, baseurl

import unittest
import base64

class MyLogin(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(30)
        self.base_url = baseurl
        self.verificationErrors = []
        self.accept_next_alert = True

    def test_login(self):
        driver = self.driver

        driver.get(self.base_url + "myurl/")
        driver.find_element_by_xpath(el_username).clear()
        driver.find_element_by_xpath(el_username).send_keys(base64.b64decode(uname))
        driver.find_element_by_xpath(el_password).clear()
        driver.find_element_by_xpath(el_password).send_keys(base64.b64decode(pswd))
        driver.find_element_by_xpath(el_signin).click()

    def is_element_present(self, how, what):
        try: self.driver.find_element(by=how, value=what)
        except NoSuchElementException, e: return False
        return True

    def is_alert_present(self):
        try: self.driver.switch_to_alert()
        except NoAlertPresentException, e: return False
        return True

    def close_alert_and_get_its_text(self):
        try:
            alert = self.driver.switch_to_alert()
            alert_text = alert.text
            if self.accept_next_alert:
                alert.accept()
            else:
                alert.dismiss()
            return alert_text
        finally: self.accept_next_alert = True

    def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
    unittest.main()

这只会打开一个新的Firefox实例,将我带到登录页面并登录。然后关闭Firefox实例。

我可以通过以下方式从另一个测试中调用该测试;

from common import login
unittest.main(module = login)

我想要做的是调用相同的测试,因此它会让我登录,但保持窗口打开,这样我就可以在其他测试中继续执行更多步骤。原因是我可能要运行50个测试,每个测试都要求我在导航到应用程序的相应部分之前登录进行测试。

答案很简单,不使用我的登录测试,而是创建另一个运行登录部分并从我的其他测试中调用的模块?或者你们可以做些更智能的事情。

0 个答案:

没有答案