当前位置: 首页 > news >正文

Pytest项目_day17(随机测试数据)

随机测试数据

  • 我们想要实现,将yaml中的测试数据随机生成,而不需要每次都手动设定好,可以通过以下的方法

python faker

  • 这是一个可以创建测试数据的依赖
  • 可以通过pip install 安装
  • 安装好后,可以通过以下代码来获取随机中文姓名
from faker import Fakerfake = Faker(locale="zh-CN")
def random_name():return fake.name()

定义YAML文件

  • 我们可以在需要随机生成数据的地方,使用${}来包裹变量,这是规范写法
    在这里插入图片描述

将YAML中的random_name()替换掉

  • 我们可以获取YAML中的指定字典数据,然后匹配value,并替换value,最后返回字典,即可实现
  • 注意,在匹配value时,我们需要将所有value都转换为字符串,这样才可以使用in关键字、.index()方法、[]切片操作。因为有的value是int类型
  • 切片操作是从start开始到end-1结束
  • 替换数据这里我们不写死,而是使用eval()eval()方法可以调用传入的实参中的方法,此处就是调用random_name()
def func_yaml(data):if isinstance(data, dict):for key, value in data.items():if "${" in str(value):start = str(value).index("{") + 1end = str(value).index("}")func_name = str(value)[start:end]data[key] = eval(func_name)return data

继续将age也改为随机数,并进行替换

  • YAML中的定义如下:
    在这里插入图片描述
  • age()方法的定义如下:
  • 注意,randint()中的两个参数,分别是开始和结束,都包含
def age():return random.randint(10, 100)
  • 接着,由于我们没有将func_yaml()写死,所以可以直接适配age()方法,调用后的输出结果如图
    在这里插入图片描述

如果我们需要将姓名前的地区也机上,同时地区不随机

  • YAML文件如下:
    在这里插入图片描述
  • 我们需要在将固定部分拼接到方法返回值上,并且仅在name键值对上进行操作,代码如下
def func_yaml(data):if isinstance(data, dict):for key, value in data.items():if "${" in str(value):start = str(value).index("{")end = str(value).index("}")func_name = str(value)[start+1:end]if key == "name":data[key] = str(value)[:start-1]+eval(func_name)else:data[key] = eval(func_name)return data

如果我们需要将姓名后的职位也加上,同时职位也不随机

  • YAML文件如下:
    在这里插入图片描述
  • 我们也需要在将固定部分拼接到方法返回值上,并且仅在name键值对上进行操作,代码如下
def func_yaml(data):if isinstance(data, dict):for key, value in data.items():if "${" in str(value):start = str(value).index("{")end = str(value).index("}")func_name = str(value)[start+1:end]if key == "name":data[key] = str(value)[:start-1]+eval(func_name)+str(value)[end+1:]else:data[key] = eval(func_name)return data
  • 此时,我们可以将parametrize和随机测试数据组合起来,如下所示:
    • YAML文件的定义如下:
      在这里插入图片描述
    • 测试用例的代码如下:
      在这里插入图片描述
http://www.dtcms.com/a/332600.html

相关文章:

  • 大模型微调分布式训练-大模型压缩训练(知识蒸馏)-大模型推理部署(分布式推理与量化部署)-大模型评估测试(OpenCompass)
  • 专题:2025跨境电商市场布局、供应链与产业带赋能报告 |附130+份报告PDF、原数据表汇总下载
  • Sparse-ICP—(3) 点到面稀疏迭代最近点算法(matlab版)
  • PDF Replacer:高效便捷的PDF文档内容替换专家
  • 国内多光谱相机做得好的厂家有哪些?-多光谱相机品牌厂家
  • 8月4日实训考察:重庆五一职院走进成都国际影像产业园
  • ffmpeg-调整视频分辨率
  • 网站与政务新媒体自查情况的报告工具功能
  • Web攻防-大模型应用LLM搭建接入第三方内容喂养AI插件安全WiKI库技术赋能
  • 编程练习---邮费计算
  • 计算机网络 THU 考研专栏简介
  • SDN控制器是什么?它在网络里的作用相当于什么?
  • Easy Rules 规则引擎详解
  • 数据结构:二叉树的表示方式(Representation of Binary Trees)
  • 基于MIMO的MATLAB预编码
  • 【Kubernetes知识点问答题】kubernetes 控制器
  • 力扣400:第N位数字
  • JavaScript性能优化30招
  • 「 CentOS7 安装部署k8s」
  • 2025新版 工业级定位系统哪家技术好?
  • 用3D打印重新定义骑行-中科米堆CASAIM自行车座椅个性化设计
  • 源网荷储充:零碳园区实现 “净零排放” 的系统解决方案
  • WinForm 简单用户登录记录器实现教程
  • 【3D图像技术分析及实现】3DGS与深度学习网络结合以实现跨场景迁移的研究调研
  • LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。
  • Product Hunt 每日热榜 | 2025-08-15
  • 【Linux基础知识系列】第九十五篇 - 使用who和w命令查看登录用户
  • Java——ACM编程
  • python的美食交流社区系统
  • 电力系统之常见基础概念