UI自动化测试(三)之ddt

1、什么是数据驱动?

其核心思想是将**测试数据和测试逻辑分开。**在数据驱动模型中,测试数据被全面抽象并封装到外层文件或数据库中,而测试逻辑则由测试代码负责实现。

通过这种方式,我们可以实现测试数据与测试逻辑的分离,从而更方便地对测试数据进行管理和维护。同时,数据驱动还可以帮助我们快速构建多样化的测试用例,提高测试的覆盖率和效率。

在数据驱动模型中,通常会将测试数据存储在外部数据源中,例如 Excel 文件、CSV 文件、XML 文件或数据库等。测试代码通过访问这些数据源来获取测试数据,并运行测试逻辑,最后将测试结果输出到日志文件或报告中。

2、为什么会产生ddt?

传统的单元测试往往需要编写多个测试用例方法,在每个方法中手动指定测试数据和期望结果。这种方式需要大量的人力和时间成本,并且容易出现遗漏和错误。例如测试登录功能,一个测试数据就要编写一个测试用例。

基于上述,产生了数据与测试代码分离的思想。https://blog.csdn.net/weixin_44885027/article/details/108859469

3、实例

import unittest
import ddt
import openpyxl


# 读取excel数据的函数
def read_excel(file_name):
    # 打开excel文件,获取workbook对象
    wb = openpyxl.load_workbook(file_name)
    # 获取工作表对象
    ws = wb.active
    # 获取总行数和总列数
    rows = ws.max_row
    cols = ws.max_column
    # 定义一个空列表data
    data = []
    # 遍历每一行和每一列,将单元格的值添加到data列表中
    for i in range(1, rows + 1):
        row_data = []
        for j in range(1, cols + 1):
            cell_value = ws.cell(row=i, column=j).value
            row_data.append(cell_value)
        data.append(row_data)
    # 返回data列表
    print(data)
    return data

# 获取excel数据
data = read_excel("D:/login_data.xlsx")

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

    def setUp(self):
        # 模拟打开浏览器和网页的操作
        print("Open browser and website")

    def tearDown(self):
        # 模拟关闭浏览器的操作
        print("Close browser")

    @ddt.data(*data)
    def test_login(self, data):
        # 获取用户名、密码和期望结果
        username = data[0]
        password = data[1]
        expected = data[2]
        # 模拟输入用户名和密码的操作
        print(f"Input username: {username}")
        print(f"Input password: {password}")
        # 模拟点击登录按钮的操作
        print("Click login button")
        # 模拟获取实际结果的操作
        # if (username == "admin" and password == 123456):
        #     actual = "success"
        # else:
        #     actual = "fail"
        actual = "success" if username == "admin" and password == 123456 else "fail"
        print(f"Get actual result: {actual}")
        # 断言实际结果和期望结果是否一致
        self.assertEqual(actual, expected)

if __name__ == '__main__':
    unittest.main()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值