环境准备

1.安装ddt模块,打开cmd输入pip install ddt在线安装

数据驱动原理

1.测试数据为多个字典的list类型

2.测试类前加修饰@ddt.ddt

3.case前加修饰@ddt.data()

4.运行后用例会自动加载成三个单独的用例

  1. # coding:utf-8
  2. import ddt
  3. import unittest
  4.  
  5. # 测试数据
  6. test_data1 = [{"username": "zhangsan", "pwd": "zhangsan"},
  7. {"username": "lisi", "pwd": "lisi"},
  8. {"username": "wangwu", "pwd": "wangwu"},
  9. ]
  10. test_data2 = [{"username": "wukong", "pwd": "wukong"},
  11. {"username": "wuneng", "pwd": "woneng"},
  12. {"username": "wujing", "pwd": "wujing"},
  13. ]
  14.  
  15. @ddt.ddt
  16. class Test(unittest.TestCase):
  17. def setUp(self):
  18. print("Start!")
  19.  
  20. def tearDown(self):
  21. print("end!")
  22.  
  23. @ddt.data(*test_data1)
  24. def test_ddt1(self, data):
  25. print(data)
  26.  
  27. @ddt.data(*test_data2)
  28. def test_ddt2(self, data):
  29. print(data)
  30.  
  31. if __name__ == "__main__":
  32. unittest.main()

selenium数据驱动案例

以登录的方法为例子:

从上一篇封装的excel方法里面读取数据,作为测试数据:http://www.cnblogs.com/lingzeng86/p/6793398.html(就是导入的excelunit包)

  1. # coding:utf-8
  2. import ddt
  3. import time
  4. import excelunit
  5. import unittest
  6. from selenium import webdriver
  7.  
  8. # 测试数据
  9. data = excelunit.ExcelUtil("test.xlsx", "Sheet2")
  10. testData = data.dict_data()
  11. print testData
  12.  
  13. @ddt.ddt
  14. class Bolg(unittest.TestCase):
  15. """登录博客"""
  16. def setUp(self):
  17. self.driver = webdriver.Chrome()
  18. url = "https://passport.cnblogs.com/user/signin"
  19. self.driver.get(url)
  20. self.driver.implicitly_wait(10)
  21.  
  22. def login(self, username, psw):
  23. """登录方法,账号和密码参数化"""
  24. self.driver.find_element_by_id("input1").send_keys(username)
  25. self.driver.find_element_by_id("input2").send_keys(psw)
  26. self.driver.find_element_by_id("signin").click()
  27. time.sleep(3)
  28.  
  29. def is_login_sucess(self):
  30. """判断是否获取到登录账户名称"""
  31. try:
  32. text = self.driver.find_element_by_id("lnk_current_user").text
  33. print text
  34. return True
  35. except:
  36. return False
  37.  
  38. @ddt.data(*testData)
  39. def test_login(self, data):
  40. """登录案例参考"""
  41. print ("当前测试数据%s" % data)
  42. # 调用登录方法
  43. self.login(data["username"], data["password"])
  44. # 判断结果
  45. result = self.is_login_sucess()
  46. self.assertTrue(result)
  47.  
  48. def tearDown(self):
  49. self.driver.quit()
  50.  
  51. if __name__ == "__main__":
  52. unittest.main()

Selenium2+python自动化之数据驱动(ddt)的更多相关文章

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

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

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

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

  3. Selenium2+python自动化23-富文本(自动发帖)

    前言 富文本编辑框是做web自动化最常见的场景,有很多小伙伴遇到了不知道无从下手,本篇以博客园的编辑器为例,解决如何定位富文本,输入文本内容 一.加载配置 1.打开博客园写随笔,首先需要登录,这里为了 ...

  4. Selenium2+python自动化24-js处理富文本(带iframe)

    前言 上一篇Selenium2+python自动化23-富文本(自动发帖)解决了富文本上iframe问题,其实没什么特别之处,主要是iframe的切换,本篇讲解通过js的方法处理富文本上iframe的 ...

  5. Selenium2+python自动化7-xpath定位

    前言 在上一篇简单的介绍了用工具查看目标元素的xpath地址,工具查看比较死板,不够灵活,有时候直接复制粘贴会定位不到.这个时候就需要自己手动的去写xpath了,这一篇详细讲解xpath的一些语法. ...

  6. Selenium2+python自动化13-Alert

    不是所有的弹出框都叫alert,在使用alert方法前,先要识别出它到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决.alert\confirm\prompt弹出框 ...

  7. Selenium2+python自动化28-table定位

    前言 在web页面中经常会遇到table表格,特别是后台操作页面比较常见.本篇详细讲解table表格如何定位. 一.认识table 1.首先看下table长什么样,如下图,这种网状表格的都是table ...

  8. Selenium2+python自动化43-判断title(title_is)

    From: https://www.cnblogs.com/yoyoketang/p/6539117.html 前言 获取页面title的方法可以直接用driver.title获取到,然后也可以把获取 ...

  9. Selenium2+python自动化54-unittest生成测试报告(HTMLTestRunner)

    前言 批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLT ...

随机推荐

  1. 「小程序JAVA实战」小程序头像图片上传(中)(44)

    转自:https://idig8.com/2018/09/09/xiaochengxujavashizhanxiaochengxutouxiangtupianshangchuan43/ 用户可以上传了 ...

  2. spring中 Bean的装配 Bean后处理器

  3. pycharm打开脚本报错Gtk-Message: Failed to load module "canberra-gtk-module"

    解决方法 sudo apt-get install libcanberra-gtk-module

  4. AssetBundle依赖

    [Managing asset dependencies] 一个Asset会依赖其它Asset.可以把一个Asset所依赖的Asset也打包进自己的AssetBundle.可是多个Asset可能依赖同 ...

  5. Transform & Physics

    [Transform & Physics] 1.Space.Unity定义了Space枚举值,此值如下: 通常通过Space.World.Space.Self来区别一个Vector是按世界坐标 ...

  6. 【LA 3989 训练指南】女士的选择 【稳定婚姻问题】

    我们先来学一下稳定婚姻问题 什么是稳定婚姻问题? 有n个女士和n个男士,他们要一一进行配对.每个男士心中对这n个女士都有一个排名,同理,每个女士心里对n个男性也有一个排名.我们要做的是,在他们配对完成 ...

  7. yaml文件转properties和properties转yaml

    首先要引入依赖 <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artif ...

  8. Qt5.11参考文档

    Qt5.11参考文档: http://www.bim-times.com/qt/Qt-5.11.1/qtdoc/index.html (来源于Qt官网)

  9. leetcode BFS解题思路

    Word Ladder 思路一:单向bfs, 使用visited数组记录哪些已经访问过了, 访问过的就不允许再次入队, 同时这里想到的是使用26个英文字母,枚举可能的取值, 类似brute force ...

  10. 测试URL

    http://localhost:8080/dmonitor-webapi/monitor/vm/342?r=1410331220921&indexes=cpu&indexes=mem ...