引入ddt

一、大致介绍:

DDT-Data Driven Test 是Python的第三方库,提供了创建数据驱动的测试,在线安装为:pip install ddt

@data 表示元祖的列表数据

@unpack 表示解压列表里的数据到各个参数

from ddt import *

二、DDT的使用条件

ddt只适合测试用例里的测试步骤一致的,比如登录页,输入账户--输入密码--点击登录

以百度登录为例,测试用例代码

文件目录如下:

 

首先是webDri.py

复制代码

#!/usr/bin/env python
#-*-coding:utf-8-*-
from selenium.common.exceptions import NoSuchElementException
import time

class webDri():

    def driver(self,driver):
        self.driver=driver


    def findelement(self,*loc):
        try:
            return self.driver.find_element(*loc)
        except NoSuchElementException as e:
            print 'error details is %s'%(e.args[0])

    def findelements(self,*loc):
        try:
            return self.driver.find_elements(*loc)
        except NoSuchElementException as e:
            print 'error details is %s'%(e.args[0])

复制代码

对象层init.py

复制代码

#!/usr/bin/env python
#-*-coding:utf-8-*-

from selenium import webdriver
import unittest

class init(unittest.TestCase):

    def setUp(self):
        self.driver=webdriver.Firefox()
        self.driver.maximize_window()
        self.driver.implicitly_wait(30)
        self.driver.get('http://www.baidu.com/')

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

复制代码

对象层loginpage.py,跟以前的区别是,创建了一个login方法,封装了点登录链接、输入账户、输入密码、点登录按钮操作

复制代码

#!/usr/bin/env python
#-*-coding:utf-8-*-
from selenium.webdriver.common.by import By
from webDDT.basePage.webDri import *

class login(webDri):

    loginlink_loc=(By.LINK_TEXT,u'登录')
    username_loc = (By.ID, 'TANGRAM__PSP_10__userName')
    password_loc = (By.ID, 'TANGRAM__PSP_10__password')
    loginButton_loc = (By.ID, 'TANGRAM__PSP_10__submit')
    error_loc = (By.ID, 'TANGRAM__PSP_10__error')

    def clickLogin(self):
        self.findelement(*self.loginlink_loc).click()

    def typeUsername(self, username):
        self.findelement(*self.username_loc).send_keys(username)

    def typePassword(self, password):
        self.findelement(*self.password_loc).send_keys(password)

    def clickLoginButton(self):
        self.findelement(*self.loginButton_loc).click()

    def login(self, username, password):
        self.clickLogin()
        self.typeUsername(username)
        self.typePassword(password)
        self.clickLoginButton()

    @property
    def getError(self):
        return self.findelement(*self.error_loc).text

复制代码

测试层,loginTest.py,  演示引入DDT

复制代码

import unittest
from webDDT.pageOBJ.init import *
from webDDT.pageOBJ.loginPage import *
from ddt import *

@ddt
class loginDdt(init,login):
    @data(('','',u'请您输入手机/邮箱/用户名'),('18291875606','',u'请您输入密码'),('18291875606','123456',u'请您输入验证码'))
    @unpack
    def test_all(self,name,pw,error):
        self.login(name,pw)
        self.assertEqual(self.getError,error)

if __name__=='__main__':
    unittest.main(verbosity=2)

复制代码

将测试代码中的测试数据data的列表分离出去

写一个helper.py文件,读取list的值

def readlists():
    lists=[
        ['','',u'请您输入手机/邮箱/用户名'],
        ['admin','',u'请您输入密码'],
        ['','admin',u'请您输入手机/邮箱/用户名']]
    return lists

修改后的loginTest.py

复制代码

@ddt
class loginDdt(init,login):
     @data(*helper.readlist())
     @unpack
     def test_all(self,name,pw,error):
         self.login(name,pw)
         self.assertEqual(self.getError,error)

if __name__=='__main__':
     unittest.main(verbosity=2)

复制代码

 

 

 

 

每天进步一点点

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值