有时,我们需要使用不同数据对同一测试用例进行检验,这时需要用到DDT。

1)安装

pip install ddt

2)以百度搜索为例,确定DDT的用法

import unittest
from time import sleep
from selenium import webdriver
from ddt import ddt, data, file_data, unpack@ddt
class TestBaidu(unittest.TestCase):@classmethoddef setUpClass(cls):cls.driver = webdriver.Chrome()cls.base_url = "https://www.baidu.com"def baidu_search(self, search_key):self.driver.get(self.base_url)self.driver.find_element_by_id("kw").send_keys(search_key)self.driver.find_element_by_id("su").click()sleep(3)# 参数化使用方法一列表@data(["case1", "selenium"], ["case2", "ddt"], ["case3", "python"])@unpackdef test_search1(self, case, search_kay):print("第一组测试用例:", case)self.baidu_search(search_kay)self.assertEqual(self.driver.title, search_kay + "_百度搜索")# 参数化使用方法二元祖@data(("case1", "selenium"), ("case2", "ddt"), ("case3", "python"))@unpackdef test_search2(self, case, search_kay):print("第二组测试用例:", case)self.baidu_search(search_kay)self.assertEqual(self.driver.title, search_kay + "_百度搜索")# 参数化使用方法三@data({"search_kay": "selenium"}, {"search_kay": "ddt"}, {"search_kay": "python"})@unpackdef test_search3(self, search_kay):print("第三组测试用例:", search_kay)self.baidu_search(search_kay)self.assertEqual(self.driver.title, search_kay + "_百度搜索")# 参数化读取JSON文件@file_data('ddt_data_file.json')def test_search4(self, search_key):print("第四组测试用例:", search_key)self.baidu_search(search_key)self.assertEqual(self.driver.title, search_key + "_百度搜索")@classmethoddef tearDownClass(cls):cls.driver.quit()if __name__ == '__main__':unittest.main(verbosity=2)

首先,通过@ddt装饰器来进行装饰

其次,DDT提供了不同形式的参数化。对列表,元组,字典,json数据都可以进行参数化。

结果显示:

test_search1_1___case1____selenium__ (__main__.TestBaidu) ... 第一组测试用例: case1
ok
第一组测试用例: case2
test_search1_2___case2____ddt__ (__main__.TestBaidu) ... ok
第一组测试用例: case3
test_search1_3___case3____python__ (__main__.TestBaidu) ... ok
第二组测试用例: case1
test_search2_1___case1____selenium__ (__main__.TestBaidu) ... ok
第二组测试用例: case2
test_search2_2___case2____ddt__ (__main__.TestBaidu) ... 第二组测试用例: case3
ok
test_search2_3___case3____python__ (__main__.TestBaidu) ... ok
第三组测试用例: selenium
test_search3_1 (__main__.TestBaidu) ... ok
第三组测试用例: ddt
test_search3_2 (__main__.TestBaidu) ... ok
第三组测试用例: python
test_search3_3 (__main__.TestBaidu) ... 第四组测试用例: python
ok
test_search4_1_case1 (__main__.TestBaidu)
test_search4_1_case1 ... 第四组测试用例: ddt
ok
test_search4_2_case2 (__main__.TestBaidu)
test_search4_2_case2 ... ok
第四组测试用例: Selenium
test_search4_3_case3 (__main__.TestBaidu)
test_search4_3_case3 ... ok----------------------------------------------------------------------
Ran 12 tests in 102.513sOKProcess finished with exit code 0

Selenium3自动化测试——22.使用DDT运行同一测试用例相关推荐

  1. UI自动化测试-数据驱动(ddt)

    在不使用ddt的情况下,我们是完全可以实现UI自动化测试用例的,如下,我编写了一条成功用例,一条失败用例 pages目录下新建home_page.py文件(这里面放的是登录后的页面操作),代码如下: ...

  2. python3 selenium_Python3+Selenium3自动化测试-(准备)

    Python3+Selenium3自动化测试-(准备) 最近在学习selenium自动化测试相关的内容,所以将实际准备情况做一记录, # 系统:win10(64位) # 浏览器:Chrome(67.0 ...

  3. Selenium3自动化测试【35】执行JS脚本(2)

    1.引言 当单击某链接时,单击的链接有时不是在原标签页上实现跳转,而是新打开一个标签页.如何实现在多个窗口间进行切换呢? 现在很多网站开发都在使用HTML5,如何利用Selenium处理常用的HTML ...

  4. Python3+Selenium3自动化测试框架——②流程梳理及代码封装

    Python3+Selenium3自动化测试框架--①基本步骤 对之前的步骤进行 一.流程梳理以及功能封装 register_code.py # coding=utf-8 import json im ...

  5. activiti 5.22的demo运行

    activiti 5.22的demo运行 从github上clon下来的activiti项目,运行demo项目activiti-webapp-explorer2时,在使用到流程设计工作区,选取acti ...

  6. Selenium3自动化测试【21】find_element定位元素

    前面连载的内容,我们介绍了如下8种定位元素的方法. find_element_by_id:通过元素的ID属性值来定位元素: find_element_by_name:通过元素的name属性值来定位元素 ...

  7. IDEA 运行 Junit 测试用例报 !!! JUnit version 3.8 or later expected 错误

    问题介绍 在使用 IDEA 运行 Junit 测试用例的时候,控制台报了!!! JUnit version 3.8 or later expected错误,完整报错信息如下: !!! JUnit ve ...

  8. pytest【运行单个测试用例】

    [pytest框架]运行单个测试用例 单个测试用例函数运行,直接在指定文件后方添加 ::test_name(注意此处两个冒号为英文格式),像下面这样: F:\TESTING\BlogPosts\Rea ...

  9. Windows10下配置JavaCup、JFlex及运行JavaCup测试用例

      本文主要是介绍如何在Windows10下下载.配置JavaCup.JFlex及运行JavaCup测试用例.其他博客介绍一种配置JavaCup的方法是:将java-cup-11a.jar的路径添加到 ...

最新文章

  1. 初探DispatcherServlet#doDispatch
  2. o2 atom(HP rw68xx)系列手机将可以使用Android。
  3. pupload 文件分块 php,基于Plupload实现Base64分割的文件上传方案
  4. Mac安装MATLAB 2017b
  5. python测控_基于RN8302和Python的电能测控系统设计
  6. 关于集成通用mapper的Mybatis代码生成器产生的model类注解
  7. java学习 hibernate 持久态和瞬时态
  8. centos7使用kubeadm部署高可用k8s集群
  9. Ubuntu15.10下华南师大锐捷认证客户端的使用详解
  10. WinXPmini仅120MB极为纯净的XP迷你版
  11. 两次救场、两度弃子:被嫌弃的盛大游戏的一生
  12. html svg 线条动画,HTML5 SVG简单的动态绘制轮廓线条动画插件
  13. Android开发实践:设计安卓应用以计算BMI指数
  14. windows7台式计算机网线连接,WIN7网线怎么连接电脑 宽带连接常见错误代码解决方案...
  15. metrics.accuracy_score()函数 计算acc
  16. 计算机组成原理——指令流水线数据通路和控制逻辑
  17. 软件过程与管理学习之:项目计划(Project Schedule)
  18. WIN10企业版系统安装(KB12特供版:采用大白菜启动盘)
  19. Arduino温湿度监测与股票涨跌提醒
  20. python小游戏:像素鸟

热门文章

  1. 每日一皮:产品和开发在线上吵了许久...
  2. 不敢相信?System.currentTimeMillis()存在性能问题
  3. 自律到极致-人生才精致:第10期
  4. Spring Cloud Config采用数据库存储配置内容
  5. 选项类 oracle ebs,Oracle EBS工具选项:关闭其他表单修改方法
  6. 9 10次C语言上机作业,C语言第五次上机作业参考答案
  7. pandas获取数据行号,删除行数据
  8. the final mapping would have more than 1 type
  9. python multiprocessing manager list error: [Errno 2] No such file or directory
  10. 如何动态调试Python的第三方库