19、ddt数据驱动测试

2023-11-05

背景:

      设计测试用例是,有些测试用例只是参数数据输入不一样而已,比如登录时,需要经常切换账号,而操作基本是一样的。如果用例重复去写操作过程会导致很多冗余的代码

1、安装ddt

pip install ddt

2、原理

  • 测试数据为多个字典的list类型
  • 测试类前加修饰@ddt.ddt
  • case前加修饰@ddt.data()
  • 运行后用例会自动加载成三个单独的用例

 

3、代码

封装读取Excel的数据

# coding=utf-8

import xlrd


class FileUtils():

    def __init__(self, file_path, sheet_index):
        self.data = xlrd.open_workbook(file_path)
        self.table = self.data.sheet_by_index(sheet_index)
        self.key = self.table.row_values(0)
        self.row_num = self.table.nrows
        self.clo_num = self.table.ncols

    def read_excel(self):
        if self.row_num <= 1:
            print(u"excel数据小于1行")
        else:
            list = []
            num = 1
            for row in range(self.row_num - 1):
                dict = {}
                values = self.table.row_values(num)
                for clo in range(self.clo_num):
                    dict[self.key[clo]] = values[clo]
                list.append(dict)
                num += 1
            return list


if __name__ == '__main__':
    file_path = "E:\\Python\\portal\\file\\text.xlsx"
    sheet_index = 0
    file = FileUtils(file_path, sheet_index)
    list = file.read_excel()
    print(list)

测试类:

# coding=utf-8

from ddtdatatest.FileUtils import FileUtils
from selenium import webdriver
import ddt
import unittest
import time

file_path = "E:\\Python\\portal\\file\\text.xlsx"
sheet_index = 0
file = FileUtils(file_path, sheet_index)
data = file.read_excel()
print(data)


@ddt.ddt
class DDTTest(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.get("https://imail.isoftstone.com")
        self.driver.implicitly_wait(3000)
        self.driver.maximize_window()

    def login(self, username, password):
        self.driver.find_element_by_id("account").clear()
        self.driver.find_element_by_id("account").send_keys(username)
        self.driver.find_element_by_id("password").clear()
        self.driver.find_element_by_id("password").send_keys(password)
        self.driver.find_element_by_id("bLogin").click()
        time.sleep(3)

    def is_login_success(self):
        try:
            text = self.driver.find_element_by_id("zb__App__Mail_title").text
            print(text)
            return True
        except:
            return False

    @ddt.data(*data)
    def test_login(self, data):
        print(u"当前测试数据 %s" % data)
        self.login(data["username"], data["password"])
        result = self.is_login_success()
        self.assertTrue(result)

    def tearDown(self):
        self.driver.quit()


if __name__ == '__main__':
    unittest.main()

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

19、ddt数据驱动测试 的相关文章

随机推荐

  • Redis——数据结构介绍

    Redis是一个key value的数据库 key一般是String类型 不过value的类型是多样的 String hello word Hash name Jack age 21 List A gt B gt C gt D Set A
  • SaltStack 自动化运维详解

    一 自动化运维工具对比 使用所需软件配置单个服务器是一项相当简单的任务 但是 如果许多服务器需要安装相同或相似的软件和配置 则该过程将需要大量的工时才能完成 这会耗尽您本已紧张的资源 如果没有某种形式的自动化 这项任务几乎无法完成 考虑到这
  • 关于SpringMVC返回date的格式问题

    Spring 项目中 java的util date和java time类型的日期 返回到前端的时候 默认的序列化方式显示的是标准格式 为了能够正确的显示想要的时间 可以使用jackson指定时间的格式 访问我的个人网站获取更多文章 数据库的
  • 汽车的操作系统AUTOSAR

    汽车软件开发autosar 01汽车相关知识 汽车发展三大趋势 电动化 智能化 网联化 1 电动化 底层支撑 网联化的驱动力 2 智能化 人工智能借助软硬融合带来功能升级 体验升级 安全升级 3 网联化 5G的应用场景 让汽车与人 车 物的
  • golang实现p2p之UDP打洞

    当今互联网到处存在着一些中间件 MIddleBoxes 如NAT和防火墙 导致两个 不在同一内网 中的客户端无法直接通信 这些问题即便是到了IPV6时代也会存在 因为即使不需要NAT 但还有其他中间件如防火墙阻挡了链接的建立 目前部署的中间
  • spring boot毕业生跟踪调查管理系统 毕业设计源码论文+答辩PPT

    答辩PPT 论文 springboot毕业生跟踪调查管理系统 摘 要 信息化社会内需要与之针对性的信息获取途径 但是途径的扩展基本上为人们所努力的方向 由于站在的角度存在偏差 人们经常能够获得不同类型信息 这也是技术最为难以攻克的课题 针对
  • CF 1843F2 - Omsk Metro (hard version)

    CF 1843F2 Omsk Metro hard version 题目描述 给定 n n n 个节点的有根树 根节点为 1 1 1 每个节点上有权值 0
  • asp.net中,<%#%>,<%=%>和<%%>分别是什么意思,有什么区别

    在asp net中经常出现包含这种形式的html代码 总的来说包含下面这样几种格式 一 这种格式实际上就是和asp的用法一样的 只是asp中里面是vbscript或者javascript代码 而在asp net中是 net平台下支持的语言
  • 使用ScriptableObject代替部分配置表的坑点

    1 使用ScriptableObject代替部分配置表的坑点 2 加载配置内存过大问题 3 URP的UI在Android模型器下比在真机上暗 4 Unity在Windows上第一次运行Play启动很慢 5 如何正确卸载UnityWebReq
  • 【华为OD统一考试B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • 【2023】数据库sql增删改查执行命令汇总(配合详细举例)

    一 单表查询 数据查询语言 专门用于查找表中的数据 select from emp 关键字 select from 表名 查询表中的所有数据 source 导入文件的文件地址 文件名称 导入dump数据 结尾不能加 号 mysql的数据备份
  • 【git】全局配置和单个仓库的用户名邮箱配置

    Git全局配置和单个仓库的用户名邮箱配置 学习git的时候 大家刚开始使用之前都配置了一个全局的用户名和邮箱 git config global user name github s Name git config global user
  • 领导力大挑战

    author skate time 2012 10 13 在实施Scrum的项目中 Scrum Master对于团队而言是相当关键的 担当着推动整个团队完成产品所有者既定目标的角色 Scrum Master的主要工作是替团队扫清前进的障碍
  • 树莓派交叉编译如何处理软连接

    软链接有点类似windows的快捷方式 添加软连接 ln s libfilename so 2 5 libfilenameso ln是指令 s是参数 so 2 5是要被链接的文件 so是软连接名字 生成硬链接 去掉 s
  • STM32编译错误

    output test axf Error L6218E Undefined symbol SystemInit referred from startup stm32f10x hd o Not enough information to
  • 现代计算机从0到1:冯·诺依曼计算机

    最近打算开始写博客 在想一开始该写什么好呢 突然灵光一现 关于计算机当然就是现代计算机之父 我们今天就来聊一下现代计算机之父 约翰 冯 诺依曼 John Von Nouma 1903 1957 美藉匈牙利人 1903年12月28日生于匈牙利
  • Linux驱动开发 通过字符设备驱动分步注册方式编写LED驱动

    通过字符设备驱动分步注册方式编写LED驱动 完成设备文件和设备的绑定 head h ifndef HEAD H define HEAD H typedef struct unsigned int MODER unsigned int OTY
  • STM32实战总结:HAL之IAP

    我们学习单片机一般都是从51开始的 51单片机烧录程序通常是使用烧录软件如STC ISP 这种方式 通过串口连接单片机 选择一个合适的波特率就可以烧录了 后来学习STM32 编程时使用KEIL软件自带的下载按钮就能下载程序 方便了不少 但需
  • ssh 连接到docker内,环境变量发生变化的解决方法(改)

    参考 https blog csdn net m0 59029800 article details 125479518 上述方法的问题 环境变量中存在空格时出错 解决方法 更改字段分隔符 使之仅仅遇到换行时分割 OLD IFS IFS n
  • 19、ddt数据驱动测试

    背景 设计测试用例是 有些测试用例只是参数数据输入不一样而已 比如登录时 需要经常切换账号 而操作基本是一样的 如果用例重复去写操作过程会导致很多冗余的代码 1 安装ddt pip install ddt 2 原理 测试数据为多个字典的li