UI自动化测试之ddt实战

ddt是Python 的第三方库,ddt 模块提供了创建数据驱动的测试,关于该模块详细的信息建议到官方查看,地址为:https://pypi.org/project/ddt/

PIP安装ddt

cmd打开命令行输入 pip install ddt (前提已经安装pip)

Pycharm安装ddt

页面路径:
File-Settings-Project:Python-Project Interpreter

 

01

Pycharm运行ddt实例 [ ddt+unittest进来数据处理,第三方库 ]
 

# -*-coding:utf-8-*-
 
import unittest
from selenium import webdriver
from ddt import data, unpack, ddt
 
# ddt+unittest进来数据处理,第三方库
 
test_data = [{"url": "http://*.com", "age": 20}, {"url": "http://*.com", "age": 22}]
 
 
@ddt  # 装饰测试类
class Testmethod(unittest.TestCase):
    @data(*test_data)
    @unpack
    def test_print_data(self, url, age):
        print(url)
        print(age)

解析:

@data(*test_data) 用来装饰测试方法,拿到几个参数,就执行几条用例

不定长参数的知识点:*表示脱外套,只能脱一层

@unpack

1、只能在*test_data后使用,如果unpack后的参数,少于5个,可以使用unpack。否则不推荐

2、要注意参数不对等的情况,提供对应参数的个数来接收变量

3、如果要对字典unpack,参数要为字典的key值

@unpack

1、只能在*test_data后使用,如果unpack后的参数,少于5个,可以使用unpack。否则不推荐

2、要注意参数不对等的情况,提供对应参数的个数来接收变量

3、如果要对字典unpack,参数要为字典的key值

02

我们再来看看UI自动化中ddt的用处,ddt库应用在UI自动化测试中,实现编写一条测试用例的代码验证多个测试点。

例如,贵司现在使用到的某管理台,存在多种测试需求,如用户名和密码输入框都为空,用户名为空、密码不为空,密码为空、用户名不为空,分别会返回不同的错误提示信息

# -*-coding:utf-8-*-
import unittest
from selenium import webdriver
from ddt import data, unpack, ddt
import time
 
 
@ddt
class XFDJ_login(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        # print('start!进入初始化环境')
        cls.dr = webdriver.Chrome()
        cls.dr.maximize_window()
        # print('测试浏览器为:{0}'.format(cls.dr.name))
        time.sleep(1)
 
    @classmethod
    def tearDownclass(cls):
        cls.dr.quit()
 
    @data(('', '', u'请输入用户名!'), ('20190604003', '', u'请输入密码 !'), ('', '123456', u'请输入用户名!'))
    @unpack
    def test_login(cls, username, password, result):
        '''验证管理台登录'''
 
        ulr1 = 'http://xfdj.kt3.pagoda.com.cn'
        # (u'访问巡服带教测试环境后台管理系统')
        cls.dr.get(ulr1)
        # print('测试地址为:{0}'.format(cls.dr.current_url))
        time.sleep(1)
        xpath = cls.dr.find_element_by_xpath
        # 点击账号登录,输入用户名+密码
        xpath('//*[@id="app"]/div/div[2]/div[2]/div/div[1]/div').click()
        time.sleep(1)
        # 捕捉账号文本栏,进行输入账号
        xpath('//*[@id="app"]/div/div[2]/div[2]/div/form/div[1]/input').send_keys(username)
        time.sleep(1)
        # 捕捉密码文本栏,进行输入密码
        xpath('//*[@id="app"]/div/div[2]/div[2]/div/form/div[2]/input').send_keys(password)
        time.sleep(1)
        # 点击登录
        xpath('//*[@id="app"]/div/div[2]/div[2]/div/form/div[3]/input').click()
        divText = xpath('//*[@id="app"]/div/div[2]/div[2]/div/form/div[1]/div').text
        cls.assertEqual(divText, result)
 
 
if __name__ == '__main__':
    unittest.main(verbosity=2)

解析:

注解:以上代码主要反映了ddt在测试用例中的应用,在@data中数据类型是元组,可以看到不同情况下的测试数据,也就是以下三个测试点:

1.用户名和密码为空,点击“登录”按钮,验证错误提示信息是否是“请输入用户名”;

2.用户名不为空,密码为空,点击“登录”按钮,验证错误是否是“请输入密码”;

3.用户名为空,密码不为空,点击“登录”按钮,验证错误是否是“请输入用户名”。

test_login中有三个参数,分别是username,password,result,分别与@data的元组数据一一对应

 

运行结果1 failed, 2 passed in 28.06s 这边我们可以到是执行了三次登录的测试用例,成功2条 报错1条,详细原因可以去分析,我们利用ddt就可以简单的去多次测试一个功能执行多条case,这就是ddt优秀之处

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:开心螺蛳粉】自提!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述

在这里插入图片描述

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值