robertclarkson/simple-yaml-testdata

使用YAML文件管理测试数据,并简单导出到YAML

安装: 42

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 7

类型:silverstripe-module

dev-master 2016-10-10 21:44 UTC

This package is not auto-updated.

Last update: 2024-09-28 20:03:36 UTC


README

维护者

Rob Clarkson

要求

SilverStripe 3 (master) SilverStripe 2.4.x (分支 2.4)

变更日志

2.1

  • 添加了TestDataExporter

2.0

  • 3.0 兼容性版本发布

1.0

  • 2.4 兼容性版本发布。

安装

  1. 将模块文件夹包含在项目根文件夹中,并将其重命名为 "testdata"
  2. 刷新清单 (?flush=1)

功能

  • 允许通过YAML文件轻松注入测试数据
  • 数据添加在当前数据库之上
  • 然后可以添加、更新或删除测试数据
  • 测试数据可以分解成块,允许使用单独的YAML文件,并且可以随时添加
  • 覆盖了Original YamlFixture类以允许在YML文件中存在循环引用
  • 创建像图片这样的虚拟数据文件(可以是空的,或者将内容从同名文件复制过来)
  • (新) 自动构建YML文件的导出器 - 只需选择类和ID,它们将被自动导出(仅在master上)。

使用方法

通过调用以下内容可以获取帮助信息

framework/sake dev/data

您也可以通过浏览器访问该模块。以管理员身份登录并确保您的网站处于开发模式。然后访问

<site_url>/dev/data

要访问导出器GUI,请访问

<site_url>/dev/data/export

基本工作流程

测试数据YAML文件应添加到/mysite/testdata目录。文件名不区分大小写,需要具有.yml扩展名。这些文件的格式与SapphireTest相同,因此您可以自由地在它们之间复制。

让我们从一个简单的例子开始。在数据目录中,创建一个名为media.yml的文件

Page:
	page:
		Title: Media Releases
	release1:
		Title: Double rainbow seen over Wellington
		Parent: =>Page.page

要添加此数据,运行

dev/data/load/media

然后,如果您想要进行一些修改,可以编辑该文件

Page:
	page:
		Title: Media Releases
	release1:
		Title: Triple rainbow seen over Wellington
		Content: Really! Saw it with me own eyes!
		Parent: =>Page.page
	release2:
		Title: The claim about double rainbow is a hoax
		Parent: =>Page.page

要更新数据,再次运行该命令

dev/data/load/media

完成时,可以使用以下命令删除所有数据

dev/data/reset

基本上就是这样。

虚拟文件

模块将自动创建(修改)这些文件,因此它们至少是可用的。

如果您将一个文件放在/mysite/testdata/files中,其名称与虚拟固定文件中的名称相同,则内容将自动复制到新创建的文件中。

导出器

导出器被设计成可以轻松构建人类可编辑的数据库转储文件。它将分析所选的类并将它们拉出到Yaml。导出器始终在草稿阶段操作,以反映在CMS中看到的内容。另一方面,加载器始终将传入的数据发布到实时状态,因此对于Testdata模块的目的而言,实时状态数据完全被忽略。文件将写入数据目录,通常是/mysite/testdata。

通过在类名旁边的复选框中勾选来进行类选择。括号中的数字表示可用的对象数量,右边的框允许您选择ID。有效的选择是

  • 显式数字:1,2,3
  • 范围:1-10
  • 两者混合:1,2,4-7,5

导出器还会(如果请求)跟踪关系并包含链接另一侧的对象。例如,选择一个成员将包括他/她所在的组,进而包括权限。或者如果请求显式ID,例如ID为2的页面,它也会拉取页面的父级,即使其ID不在请求的列表中。这允许轻松构建全面的数据集。

另一个选项是包括实际文件在导出中。导出器将它们存储在/mysite/testdata/files中,不进行嵌套,这意味着如果发生名称冲突,文件将被覆盖。

团队项目中的导出器

导出器现在尊重现有的TestDataTags。这将允许您重新导出之前从其他人导入的对象,而在此过程中标签不会改变。

其工作原理是导出器内的标签生成器在TestDataTag表中查找对象,并使用那里找到的内容。如果对象之前未导入或导出,它将创建一个新的标签并将其写入表。这样,每个开发者的机器上就创建了一个标签到ID的映射,yml文件也变得便携。

但要注意的是,对象的映射包括文件名查找,所以请确保您直接导出到相同的文件名(不要在以后重命名文件,因为您将失去这种映射功能)。

开发笔记

  1. 在生产前从数据库中删除TestDataTag表。这将防止错误地删除实时数据。
  2. 记录基于Yaml文件名和Yaml句柄进行跟踪,所以您需要注意,如果您更改了这些中的任何一项,TestData将认为您添加了新的记录。
  3. 因此,只要您保留文件名和Yaml句柄,就可以更新测试记录。它们的ID将被保留,所以您的关联将保持完整。
  4. TestData将自动将版本化对象发布到Live,并从两个阶段中删除它们,因此您不需要手动执行。
  5. 从项目角度来看,我们发现保留一个dummy.yml文件很有用,该文件包含用于开发和测试的数据,这样每个人至少使用相同的基线。除此之外,ia.yml对于保持干净的IA以加载到生产服务器和客户端很有用。
  6. 导出器输出文件在其最后3行包含一些元数据,以便更容易调试。
  7. 当作为团队一起工作时使用导出器,请直接导出到特定的yml文件。否则,映射不会触发。