注:这是一小篇学习随笔,使用 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

ddt python_python-ddt实践相关推荐

  1. ddt python_python——DDT

    一般进行接口测试时,每个接口的传参都不止一种情况,一般会考虑正向.逆向等多种组合.所以在测试一个接口时通常会编写多条case,而这些case除了传参不同外,其实并没什么区别. 这个时候就可以利用ddt ...

  2. ddt python_python——ddt问题总结

    前言: 在使用DDT数据驱动+HTMLTestRunner输出测试报告时遇到过2个问题: 1.生成的测试报告中,用例名称后有dict() -> new empty dictionary 2.使用 ...

  3. ddt python_Python 之数据驱动工具:DDT

    https://www.cnblogs.com/miniren/p/7099187.html 背景 python 的unittest 没有自带数据驱动功能. 所以如果使用unittest,同时又想使用 ...

  4. ddt数据驱动 python_Python ddt数据驱动

    使用Python ddt数据驱动,为自动化测试用例提供数据 首先安装ddt,  命令:pip install ddt 安装完成后就可以使用ddt了,直接上例子,代码如下所示: # -*- coding ...

  5. ddt python_python之ddt模式随记

    ddt 是第三方模块,需安装, pip install ddt DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据) 通常情况下,data中的数据按照一个参数传递给测试用例,如果da ...

  6. post 返回代码_减少冗长代码,利用DDT轻松分离测试数据

    戳上面的蓝字关注,助你成金 01 前言 我们在进行接口测试时,大多数时候都是针对接口的参数设计用例进行测试,而相应的测试步骤基本相同(调用接口,检查返回码,检查返回数据).这种场景非常适合使用数据驱动 ...

  7. Selenium3自动化测试——22.使用DDT运行同一测试用例

    有时,我们需要使用不同数据对同一测试用例进行检验,这时需要用到DDT. 1)安装 pip install ddt 2)以百度搜索为例,确定DDT的用法 import unittest from tim ...

  8. 案例驱动python编程入门-python ddt数据驱动实例代码分享

    python ddt数据驱动最简实例 在接口自动化测试中,往往一个接口的用例需要考虑 正确的.错误的.异常的.边界值等诸多情况,然后你需要写很多个同样代码,参数不同的用例.如果测试接口很多,不但需要写 ...

  9. python语言百度百科-Python 语言下数据驱动DDT的应用

    数据驱动测试的含义: 在百度百科上的解释是: 数据驱动测试,即黑盒测试(Black-box Testing),又称为功能测试,是把测试对象看作一个黑盒子.利用黑盒测试法进行动态测试时,需要测试软件产品 ...

  10. python—unittest—数据驱动详细讲解(ddt)

    数据驱动ddt 数据驱动ddt可以实现测试数据与测试脚本的分离,通过ddt来将测试数据加载到脚本中.采用数据驱动设计模式使一组数据对应一个测试用例,用例自动加载生成 ddt基础 pip install ...

最新文章

  1. Struts2与Struts1的对比
  2. 微软在Build 2016开发者大会中发布 “认知服务”,牛津计划有正式名字啦!
  3. java 本地 mq_java rocketmq--消息的产生(普通消息)
  4. 2018蓝桥杯省赛---java---C---2(猴子分香蕉)
  5. leetcode —— 77. 组合
  6. 如何能顺利往表中允许为null的字段插入null值(参数绑定)
  7. android 邮件发送html,如何发送HTML电子邮件
  8. android的keyevent方法,Android keyevent按键和值的对应
  9. ext2文件系统详解
  10. 对接企业微信3:网页授权登录
  11. 约束优化方法_2_——Frank-Wolfe方法
  12. IP地址和物理地址的区别和联系
  13. 微信营销与博客营销的区别
  14. 【2020年天梯赛—校内选拔赛】7-4手机话费
  15. 炫酷的表白烟花 html+css+js实现的表白烟花特效(程序员专属情人节表白网站)
  16. 【HCNA】-【网络基础】
  17. 1504: 变态杀人狂 时间限制: 1 Sec 内存限制: 128 MB 提交: 21 解决: 10 [提交][状态][论坛] 题目描述 变态杀人狂三师弟想到一个杀人游戏 游戏规则如下: 三师
  18. Harbour.Space Scholarship Contest 2021-2022 (Div. 1 + Div. 2) -29
  19. manifest php,manifest让网页实现离线访问
  20. Unity material修改图片的UV通道

热门文章

  1. 草稿 断开绑dgv1
  2. linux-vim设置环境
  3. django-数据的插入-利用pymysql
  4. Remix Solidity IDE 快速入门
  5. 一个轻量级分布式RPC框架--NettyRpc
  6. ELK学习总结(2-2)单模式CRUD操作
  7. filebeat 配置文件详解
  8. Android 自动补全提示输入AutoCompleteTextView、 MultiAutoCompleteTextView
  9. 《敏捷软件开发-原则、方法与实践》-Robert C. Martin
  10. 开源cms系统:We7 CMS 2.5版内测版发布啦!