Selenium之DDT数据驱动测试实战。

DDT模块安装:

打开cmd命令提示符,输入pip install ddt进行安装,如下图所示。

DDT模块装饰器:

测试类上使用:

@ddt.ddt 装饰器:

测试用例上使用:

@ddt.data 装饰器:把参数作为测试数据

@ddt.unpack 装饰器:若参数是元组或列表解析成多个参数。

案例代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import ddt, unittest, time


def read_data():
    return [['正确账号', '正确密码', '登录成功!'],
            ['admin', '', '请输入密码!'],
            ['', '123456', '请输入账号!']]


@ddt.ddt
class Test_Login(unittest.TestCase):
    '''检验搜狐邮箱登录'''

    def setUp(self):
        self.driver = webdriver.Chrome()
        self.test_url = "https://mail.sohu.com/fe/#/login"

    def tearDown(self):
        self.driver.quit()

    def by_xpath(self, usernameloc):
        return self.driver.find_element_by_xpath(usernameloc)

    def get_assert_text(self):
        '''获取验证信息'''
        try:
            time.sleep(2)
            # loctor = (By.CSS_SELECTOR, ".tipHolder.ng-binding")
            loctor=(By.XPATH,"//html[@id='ng-app']//div[@id='addSkinClass']//span[@title='liuxm_0522']")
            WebDriverWait(self.driver, 5, 0.5).until(EC.presence_of_element_located((loctor)))
            return self.by_css(".tipHolder.ng-binding").text
        except Exception as message:
            print('元素定位报错,报错原因:%s' % message)

    @ddt.data(*read_data())
    @ddt.unpack
    def sohu_login(self, username, password, text):
        self.driver.get(self.test_url)
        time.sleep(3)
        self.by_xpath("//html[@id='ng-app']//div[@id='theme']//div[@class='ipt-box pos-r']/input[@type='text']").clear()
        self.by_xpath(
            "//html[@id='ng-app']//div[@id='theme']//div[@class='ipt-box pos-r']/input[@type='text']").send_keys(
            username)
        self.by_xpath("//html[@id='ng-app']//div[@id='theme']//input[@type='password']").send_keys(password)
        self.by_xpath("//html[@id='ng-app']//div[@id='theme']//input[@value='登 录']").click()
        time.sleep(1)

        self.driver.refresh()
        self.assertEqual(self.get_assert_text(), text)


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

 

猜你喜欢

转载自blog.csdn.net/qq_39979646/article/details/104659669