ddt python_python-ddt实践

注:这是一小篇学习随笔,使用 python3 语言,ddt 数据驱动,实现新浪微博登录页不同情况下返回错误信息的验证。

一、实践准备

1、python3 环境,chrome 浏览器,PyCharm 编辑器,见另篇:python+selenium环境

2、ddt 是 python 的第三方库,详细信息见官网:ddt 官网点这里

3、在 python3 安装路劲下 cmd 运行命令:pip install ddt,就可以安装 ddt。

二、开始实践

1、实践要求:实现编写一条测试用例的代码验证多个测试点。

例如,在新浪微博登录页面中,多种情况:用户名和密码都为空,用户名为空、密码不为空,用户名不为空、密码为空,分别返回不同的错误提示信息。

2、通过 ddt 来实现,在 python 命令行环境中即可导入。在 ddt 模块中:

@data 表示元组的列表数据,

@unpack 表示来解压元组到多个参数。

变量 divText 取用 xpath :'/html/body/div[1]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]' 的 text 文本。

实现代码:

__author__ = "XXX"

import unittest

import time as t

from selenium import webdriver

from ddt import data,unpack,ddt

@ddt

class SinaLogin(unittest.TestCase):

def setUp(self):

self.driver = webdriver.Chrome()

self.driver.maximize_window()

self.driver.get('http://mail.sina.com.cn/')

self.driver.implicitly_wait(30)

def tearDown(self):

t.sleep(3)

self.driver.quit()

@data(('','','请输入邮箱名'),('','admin','请输入邮箱名'),('admin','','您输入的邮箱名格式不正确'))

@unpack

def test_login(self,username,password,result):

'''验证:测试新浪邮箱登录N中情况'''

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()

divText = self.driver.find_element_by_xpath('/html/body/div[1]/div/div[2]/'

'div/div/div[4]/div[1]/div[1]/div[1]/span[1]').text

#在freeError里,,根据情况输入情况变化的

self.assertEqual(divText,result)

if __name__ == '__main__':

unittest.main(verbosity=2)

执行后的效果:

也可以把 @data 中的数据分离到一个方法中,如存储在列表中,只需要在 @data 中增加 ”*“ 调用函数 getData,因为 @data 要求的数据类型是元组,加 ”*“ 后便把 getData 函数返回的数据列表型变为元组类型。

修改后的代码:

__author__ = "XXX"

import unittest

import time as t

from selenium import webdriver

from ddt import data,unpack,ddt

def getData():

'''数据分离出来放到列表中'''

return [

['','','请输入邮箱名'],

['','admin','请输入邮箱名'],

['admin','','您输入的邮箱名格式不正确']

]

@ddt

class SinaLogin(unittest.TestCase):

def setUp(self):

self.driver = webdriver.Chrome()

self.driver.maximize_window()

self.driver.get('http://mail.sina.com.cn/')

self.driver.implicitly_wait(30)

def tearDown(self):

t.sleep(3)

self.driver.quit()

@data(*getData())#调用函数getData

@unpack

def test_login(self,username,password,result):

'''验证:测试新浪邮箱登录N中情况'''

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()

divText = self.driver.find_element_by_xpath('/html/body/div[1]/div/div[2]/'

'div/div/div[4]/div[1]/div[1]/div[1]/span[1]').text

#在freeError里,根据情况输入情况变化的

self.assertEqual(divText,result)

if __name__ == '__main__':

unittest.main(verbosity=2)

执行后的效果一致。

谢谢查看!

2019-11-16

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值