• Selenium2+python自动化59-数据驱动(ddt)【转载】


    前言

    在设计用例的时候,有些用例只是参数数据的输入不一样,比如登录这个功能,操作过程但是一样的。如果用例重复去写操作过程会增加代码量,对应这种多组数据的测试用例,可以用数据驱动设计模式,一组数据对应一个测试用例,用例自动加载生成。

    一、环境准备

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

    >>pip install ddt

    二、数据驱动原理

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

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

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

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

    5.测试结果:

    Testing started at 21:51 ...
    start!
    {'username': 'seleniumxe7xbexa4', 'psw': '232607095'}
    end!
    start!
    {'username': 'pythonxe7xbexa4', 'psw': '226296743'}
    end!
    start!
    {'username': 'appiumxe7xbexa4', 'psw': '512200893'}
    end!

    三、selenium案例

    1.从上一篇封装的excel方法里面读取数据,作为测试测试Selenium2+python自动化58-读取Excel数据(xlrd)

    2.在之前写的登录那篇基础上做点修改,测试参数读取excel里的数据Selenium2+python自动化48-登录方法(参数化)

    3.代码参考如下

    # 测试数据
    testData = data.dict_data()
    print testData

    @ddt.ddt
    class Bolg(unittest.TestCase):
        u'''登录博客'''
        def setUp(self):
            self.driver = webdriver.Firefox()
            url = "https://passport.cnblogs.com/user/signin"
            self.driver.get(url)
            self.driver.implicitly_wait(30)

        def login(self, username, psw):
            u'''这里写了一个登录的方法,账号和密码参数化'''
            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):
            u'''判断是否获取到登录账户名称'''
            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):
            u'''登录案例参考'''
            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()

  • 相关阅读:
    元素的offset,scroll,client之间的区别和联系
    一道面试题--面向对象
    前端三大主流框架
    局部变量和成员变量
    【BZOJ1179】[Apio2009]Atm/抢掠计划
    【POJ1195】Mobile phones
    退役狗的日常
    【BZOJ1088】扫雷
    【BZOJ1717】&&【POJ3261】[Usaco2006 Dec]Milk Patterns 产奶的模式
    【BZOJ1342】Sound静音问题
  • 原文地址:https://www.cnblogs.com/caoj/p/7814276.html
Copyright © 2020-2023  润新知