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

Posted 小曹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium2+python自动化59-数据驱动(ddt)转载相关的知识,希望对你有一定的参考价值。

本篇转自博客:上海-悠悠

原文地址:http://www.cnblogs.com/yoyoketang/tag/unittest/

前言

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

一、环境准备

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\': \'selenium\\xe7\\xbe\\xa4\', \'psw\': \'232607095\'}
end!
start!
{\'username\': \'python\\xe7\\xbe\\xa4\', \'psw\': \'226296743\'}
end!
start!
{\'username\': \'appium\\xe7\\xbe\\xa4\', \'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()

 

以上是关于Selenium2+python自动化59-数据驱动(ddt)转载的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

Selenium2+python自动化21-TXT数据参数化

Selenium2+python自动化21-TXT数据参数化转载

Selenium2+python自动化58-读取Excel数据(xlrd)