Python接口自动化数据驱动方式

引言

在 使 用 自 动 化 测 试 框 架 编 写 测 试 用 例 时 , 自 动 化 测 试 人 员 , 更 多 的 应 考 虑 核 心 的 测 试 逻 辑 。 在 使 用 unitttest 的 框 架 中 , 我 们 在 测 试 类 中 , 通 过 编 写 多 个 方 法 来 实 现 , 每 个 方 法 对 应 一 个 测 试 用 例 。 原 则 上 , 测 试 方 法 , 应 包 含 3 个 部 分 ,第 一 ,given 即 给 定 测 试 数 据 部 分 ,比 如 使 用 框 架 DB 模 块 数 据 库 中 插 入 测 试 数 据 , 或 者 是 测 试 数 据 部 分 前 提 是 测 试 库 中 有 手 工 测 试 前 准 备 的 测 试 数 据 。 第 二 , when 部 分 , 即 当 用 准 备 的 测 试 数 据 , 对 被 测 接 口 发 送 了 请 求 。 这 里 我 归 纳 为 测 试 动 作 部 分 。 第 三 , then 部 分 。 对 接 口 发 送 请 求 后 , 断 言 部 分 , 接 口 的 实 际 返 回 和 我 的 预 期 是 否 相 符 。 那 么 代 码 规 范 上 , 在 使 用 pytest 的 自 动 化 框 架 中 , 总 是 在 fixture 中 ,尽 量 多 写 Given。 在 使 用 unittest 的 框 架 中 可 以 写 在 setup 方 法 中 。 原 因 : 第 一 , 增 加 测 试 的 可 读 性 和 可 维 护 性 , 第 二 , 在 unittest setup 中 或 者 pytest fixture 中 的 异 常 为 ERROR.而 不 是 FAIL 所 以 , 在 编 写 测 试 函 数 时 , 我 们 要 考 虑 如 何 使 用 Given 部 分 造 好 的 数 据 , 或 者 手 工 测 试 阶 段 的 测 试 数 据 , 发 送 接 口 测 试 请 求 , 以 便 回 归 自 动 化 测 试 。

测试数据在函数中如何写?

在 使 用 pytest 的 自 动 化 框 架 中 ,提 供 了 强 大 的 fixture,可 以 为 测 试 函 数 传 入 测 试 数 据 集( 少 量 ),或 者 提 供 批 量 的 数 据 源 。同 样 在 基 于 unittest 的 自 动 化 框 架 中 , 也 提 供 了 对 数 据 的 支 持 , 比 如 paramunittest, ddt 第 三 方 包 的 支 持 并 配 合 excel, json , 或 者 yaml 文 件 等 作 为 数 据 源 。
1.使用 paramunittest
在这里插入图片描述
每 个 元 组 对 应 一 个 测 试 用 例 数 据 部 分 ,见 上 图 2,也 可 以 在 元 组 中 ,使 用 字 典 ,如 图 3。并 且 测 试 类 需 要 提 供 setParameters 方 法 ,把 测 试 数 据 转 换 为 实 例 变 量 即 self.参 数 名 , 供 每 个 测 试 用 例 使 用 。 但 是 缺 点 也 很 明 显 , 类 中 的 每 个 测 试 函 数 , 都 要 执 行 一 遍 setParameter s 方 法 , 在 pycharm 中 无 法 直 接 调 试 , 需 要 指 定 main 或 者 使 用 unittest,discover 以 套 件 方 式 运 行
在这里插入图片描述
在 实 际 使 用 中 , 通 常 配 合 excel 测 试 数 据 源 使 用 , 并 使 用 比 如 openpyxl 模 块 或 者 xlrd 模 块 将 测 试 数 据 转 换 为 列 表 字 典 格 式 或 嵌 套 列 表 使 用 : 下 图 将 测 试 数 据 写 入 excel 中

在这里插入图片描述
代码
在这里插入图片描述

  1. 使用 DDT
    ddt 包 含 一 个 类 装 饰 器 ,@ddt 图 1, 以 及 2 个 方 法 级 别 的 装 饰 器 @data 图 2 和 @unpack 图 3, 它 们 可 以 应 用 于 多 个 测 试 用 例 方 法 。 相 比 paramsunittest, 更 灵 活 , 不 同 的 测 试 用 例 , 可 以 应 用 不 同 的 测 试 数 据 。共 同 点 , 都 需 要 有 相 同 的 测 试 逻 辑 , 以 解 决 重 复 写 test 方 法 , 或 者 针 对 多 组 数 据 的 测 试 。如下图
    在这里插入图片描述
    同 样 @data 的 测 试 数 据 源 , 可 以 来 至 json 文 件
    在这里插入图片描述

在这里插入图片描述
或 者 使 用 使 用 @file_data 指 定 json 文 件
在这里插入图片描述
数 据 格 式 为 json 对 象 格 式 ,{}对 象 中 包 含 多 个 测 试 用 例 ,key 可 为 自 定 义 测 试 用 例 名 称 。

在这里插入图片描述
优 点 : 通 过 suite 套 件 方 式 运 行 自 定 义 , 可 显 示 json 文 件 中 指 定 的 key 作 为 测 试 报 告 , 用 例 名 。 如 下 图

在这里插入图片描述
同 样 的 , ddt 也 可 用 于 excel 数 据 驱 动 , 方 式 如 下

在这里插入图片描述

在这里插入图片描述

在 excel 中 接 口 数 据 部 分 , 为 字 典 串 , 可 以 使 用 eval 函 数 进 行 转 换 。

  1. 使用 yaml
    Yaml 文 件 也 可 以 作 为 自 动 化 测 试 框 架 , 测 试 数 据 源 , 特 别 适 合 用 来 表 达 或 编 辑 数 据 结 构 、 各 种 配 置 文 件 , 特 点 是 对 格 式 有 严 格 要 求 , 使 用 缩 进 , 使 用 - 代 表 yaml 数 组 。 如 下 图 :

在这里插入图片描述
框 架 实 现 中 , 就 需 要 包 含 解 析 yaml 文 件 的 模 块 。 代 码 示 例 :
在这里插入图片描述
类 似 于 excel 数 据 驱 动 , 数 据 格 式 也 需 要 被 框 架 转 换 为 字 典 格 式 , 便 于 读 取 数 据 数 据 为 了 便 于 使 用 使 用 , 可 进 一 步 封 装 为 对 象

在这里插入图片描述
然 后 在 testCase 类 中 , 导 入 模 块 比 如 Dbshop_Info 类 使 用 封 装 的 测 试 数 据 。

最后

以 上 总 结 了 。 Unittest 中 框 架 使 用 数 据 驱 动 测 试 的 各 种 方 法 , 以 及 使 用 的 好 用 的 处 理 方 法 , 另 外 不 乏 一 些 其 他 自 动 化 框 架 , 使 用 数 据 库 作 为 测 试 数 据 源 , 亦 或 者 使 用 excel, 更 进 一 步 使 用 , 写 入 所 有 测 试 用 例 , 但 缺 乏 灵 活 性 , 用 例 组 织 容 易 出 错 , 尤 其 是 对 关 联 用 例 的 处 理 。 此 外 ,unittest 框 架 被 广 泛 应 用 于 接 口 自 动 化 测 试 框 架 ,或 者 单 元 测 试 ,比 如 Django 内 置 基 于 unittest 的 单 元 测 试 。 Pytest 的 fixture 更 强 大 , 但 非 python 语 言 内 置 , 但 无 论 哪 种 , 其 思 想 都 相 同 。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值