zoukankan      html  css  js  c++  java
  • selenium参数化-ddt模块

    DDT介绍:

    DDT(数据驱动测试)允许您通过使用不同的测试数据运行一个测试用例来使其倍增,并使它显示为多个测试用例。要使用DDT需要安装,安装命令:pip install ddt
    

    使用方法:

    dd.ddt:
    装饰类,也就是继承自TestCase的类。
    ddt.data:
    装饰测试方法。参数是一系列的值。
    ddt.file_data:
    装饰测试方法。参数是文件名。文件可以是json 或者 yaml类型。
    注意,如果文件以”.yml”或者”.yaml”结尾,ddt会作为yaml类型处理,其他所有文件都会作为json文件处理。
    如果文件中是列表,每个列表的值会作为测试用例参数,同时作为测试用例方法名后缀显示。
    如果文件中是字典,字典的key会作为测试用例方法的后缀显示,字典的值会作为测试用例参数。
    ddt.unpack:
    传递的是复杂的数据结构时使用。比如使用元组或者列表,添加unpack之后,ddt会自动把元组或者列表对应到多个参数上。字典也可以这样处理。参见下面的示例2.
    测试用例方法名生成规则
    使用ddt后,会产生一个新的测试用例方法名:之前的测试用例方法名_ordinal_data
    之前的测试用例方法名:即定义的测试用例方法名。比如def test_large(),这里就是test_large
    ordinal:整数,从1开始递加。
    data:如果传递过来的数据存在__name__属性,则这里就是该数据的__name__值。如果未定义__name__属性,ddt会尽量将传递过来的数据转化为python标识符,作为data显示。比如    (3,2)就转化为3_2。需要注意的是,如果数据是字典,则这里就是字典的key。
    

    示例:

    以登陆新浪邮箱为例,分别测试用户名为空,密码为空,全部为空的三种情况,代码如下:
    
    class SinaTestCase(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Chrome()
            self.driver.maximize_window()
             self.driver.get("https://mail.sina.com.cn/")
                self.driver.implicitly_wait(30)
        @ddt.data(*casedata)
        @unpack
        def test_username_passwd(self,username,password,expectresult):
            '''验证:新浪登陆为空'''
            self.driver.find_element_by_id("freename").send_keys(username)
            self.driver.find_element_by_id("freepassword").send_keys(password)
            self.driver.find_element_by_link_text("登录").click()
            isText = WebDriverWait(driver=self.driver, timeout=10).until(expected_conditions.text_to_be_present_in_element(
                (By.XPATH, "/html/body/div[1]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]"), "请输入邮箱名"))
            self.assertEqual(isText, expectresult)
    
        def tearDown(self):
            self.driver.quit()
        if __name__ == '__main__':
            unittest.main(verbosity=2)
  • 相关阅读:
    Mysql 单表查询-排序-分页-group by初识
    Mysql 单表查询where初识
    Mysql 库表操作初识
    Mysql 常见数据类型及约束
    数据库 初识
    Mysql 游标初识
    Mysql 控制结构初识
    Mysql 存储过程初识
    单链表-Python实现-jupyter->markdown 格式测试
    MySQL 触发器学习-markdown->html 格式测试
  • 原文地址:https://www.cnblogs.com/qixc/p/11820893.html
Copyright © 2011-2022 走看看