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

Codeception中如何使用Fixtures优化测试

简介

Fixtures 是测试中非常重要的一部分。主要目的是建立一个固定/已知的环境状态以确保 测试可重复并且按照预期方式运行。

简答说就是Fixtures提供一种预填充数据的方式,即在测试前需要准备好哪些数据,以便测试可以正常展开,不受其他测试的影响。

一个 Fixture 可能依赖于其他的 Fixtures ,所定义的依赖会自动加载。

该方法相比于dump.sql的填充方法更加灵活, 且不会出去填充的冲突问题.

配置

定义一个Fixtures

通过继成yii\test\ActiveFixture, 并声明 modelClass 来定义一个Fixtures , depends为要依赖的Fixtures, 可选。

Fixtures通常放置于tests目录中的fixtures目录下.

<?php
namespace tests\fixtures;use yii\test\ActiveFixture;class UserFixture extends ActiveFixture
{public $modelClass = 'app\models\User';public $depends = ['app\tests\fixtures\UserFixture'];
}

设置填充数据

@tests/fixtures/data目录中,每个Fixtures添加一个数据文档

在位置 @tests/fixtures/data/user.php 中, 设置以下数据, 为要被插入用户表中的数据文件, user1user2为别名, 方便调用

<?php
return ['user1' => ['username' => 'lmayert','email' => 'strosin.vernice@jerde.com','auth_key' => 'K3nF70it7tzNsHddEiq0BZ0i-OU8S3xV','password' => '$2y$13$WSyE5hHsG1rWN2jV8LRHzubilrCLI5Ev/iK0r3jRuwQEs2ldRu.a2',],'user2' => ['username' => 'napoleon69','email' => 'aileen.barton@heaneyschumm.com','auth_key' => 'dZlXsVnIDgIzFgX4EduAqkEPuphhOh9q','password' => '$2y$13$kkgpvJ8lnjKo8RuoR30ay.RjDf15bMcHIF7Vz1zz/6viYG5xJExU6',],
];

使用

在测试用例中, 通过定义_fixtures方法, 声明需要使用的Fixtures及填充数据文件

/*** @var \UnitTester*/protected $tester;public function _fixtures(){return ['users' => ['class' => UserFixture::className(),'dataFile' => '@tests/fixtures/data/user.php'],'profiles' => ['class' => UserProfileFixture::className(),'dataFile' => '@tests/fixtures/data/user_profile.php'],];}

通过如下方法, 可以获取插入的记录, 返回值为该Fixture类中对应的modelClass的一个实例

$user = $this->tester->grabFixture('users', 'default');

参考资料

Fixtures
Fixtures

http://www.xdnf.cn/news/1051615.html

相关文章:

  • 说说聚合路由器
  • 【编译原理】第十章 优化
  • 影视剧学经典系列-梁祝-陶渊明《感士不遇赋并序》
  • Google DeepMind研究:大语言模型(LLMs) 思维链解码(CoT-decoding)方法解析
  • MCP案例 - 数据可视化工具服务器
  • 《从入门到精通:解锁Android Studio的无限可能》
  • 第六章:连接查询优化 - 多表联查不再慢
  • Ubuntu中ESP32使用记录
  • 模拟设计的软件工程项目
  • 软件工程瀑布模型学习指南
  • Vue 3 路由跳转全面指南(Composition API + <script setup>)
  • SpringBoot电脑商城项目--用户注册功能
  • 使用 socat 和 xinetd 将程序绑定到端口运行
  • 电磁场与电磁波篇---梯度散度旋度
  • C#最佳实践:为何应减少方法参数
  • pandas
  • golang-linux环境配置
  • 【工具教程】如何批量识别大量图片的文字并重命名图片,图片文件批量文件识别改名的详细操作步骤和注意事项
  • SpringBoot电脑商城项目--项目分析及搭建
  • 玫瑰动态爱心代码
  • Python•元组集合字符串
  • 基于C#部署YOLOv5目标检测模型核心技术深度解析
  • 分段贝塞尔曲线
  • 基于 pysnmp 的实际业务场景应用案例:网络设备监控与配置系统
  • python蓝色动态线
  • 仿muduo库实现并发服务器
  • 搭建基于 Prometheus、Grafana 和 Alertmanager 的监控告警系统
  • 【计网】导航
  • ​​WSL2 (Ubuntu)​​ 中安装 ​​CUDA 12.9​​ 的详细教程
  • 企业信息技术外包管理制度:如何安全高效管理IT外包服务