• Selenium2+python自动化之数据驱动(ddt)


    环境准备

    1.安装ddt模块,打开cmd输入pip install ddt在线安装

    数据驱动原理

    1.测试数据为多个字典的list类型

    2.测试类前加修饰@ddt.ddt

    3.case前加修饰@ddt.data()

    4.运行后用例会自动加载成三个单独的用例

    # coding:utf-8
    import ddt
    import unittest
    
    # 测试数据
    test_data1 = [{"username": "zhangsan", "pwd": "zhangsan"},
                 {"username": "lisi", "pwd": "lisi"},
                 {"username": "wangwu", "pwd": "wangwu"},
                 ]
    test_data2 = [{"username": "wukong", "pwd": "wukong"},
                 {"username": "wuneng", "pwd": "woneng"},
                 {"username": "wujing", "pwd": "wujing"},
                 ]
    
    
    
    @ddt.ddt
    class Test(unittest.TestCase):
        def setUp(self):
            print("Start!")
    
        def tearDown(self):
            print("end!")
    
        @ddt.data(*test_data1)
        def test_ddt1(self, data):
            print(data)
    
        @ddt.data(*test_data2)
        def test_ddt2(self, data):
            print(data)
    
    
    if __name__ == "__main__":
        unittest.main()
    

     selenium数据驱动案例

    以登录的方法为例子:

    从上一篇封装的excel方法里面读取数据,作为测试数据:http://www.cnblogs.com/lingzeng86/p/6793398.html(就是导入的excelunit包)

    # coding:utf-8
    import ddt
    import time
    import excelunit
    import unittest
    from selenium import webdriver
    
    # 测试数据
    data = excelunit.ExcelUtil("test.xlsx", "Sheet2")
    testData = data.dict_data()
    print testData
    
    
    @ddt.ddt
    class Bolg(unittest.TestCase):
        """登录博客"""
        def setUp(self):
            self.driver = webdriver.Chrome()
            url = "https://passport.cnblogs.com/user/signin"
            self.driver.get(url)
            self.driver.implicitly_wait(10)
    
        def login(self, username, psw):
            """登录方法,账号和密码参数化"""
            self.driver.find_element_by_id("input1").send_keys(username)
            self.driver.find_element_by_id("input2").send_keys(psw)
            self.driver.find_element_by_id("signin").click()
            time.sleep(3)
    
        def is_login_sucess(self):
            """判断是否获取到登录账户名称"""
            try:
                text = self.driver.find_element_by_id("lnk_current_user").text
                print text
                return True
            except:
                return False
    
        @ddt.data(*testData)
        def test_login(self, data):
            """登录案例参考"""
            print ("当前测试数据%s" % data)
            # 调用登录方法
            self.login(data["username"], data["password"])
            # 判断结果
            result = self.is_login_sucess()
            self.assertTrue(result)
    
        def tearDown(self):
            self.driver.quit()
    
    
    if __name__ == "__main__":
        unittest.main()
    
  • 相关阅读:
    有关怎样入门ACM
    在线安装eclipse中html/jsp/xml editor插件(很可靠)
    如何才干高速成为优秀的程序猿
    JavaScript必知的特性(继承)
    Maven构建真正的J2EE项目
    HLJU 1223: 寻找区间和 (交替推进法)
    重要经验五:block作为属性的注意事项
    Android Studio第一次启动的Fetching android sdk component information的问题
    树莓派学习笔记——apt方式安装opencv
    大型项目开发: 隔离 (《大规模C++程序设计》书摘)
  • 原文地址:https://www.cnblogs.com/lingzeng86/p/6790827.html
Copyright © 2020-2023  润新知