silverstripe / testsession
基于浏览器的测试会话的支持模块,例如用于Behat行为测试
Requires
- composer/installers: *
- silverstripe/framework: ^4@dev
- silverstripe/vendor-plugin: ^1.3
Requires (Dev)
- 4.x-dev
- 3.x-dev
- 2.x-dev
- 2.4.x-dev
- 2.4.1
- 2.4.0
- 2.3.x-dev
- 2.3.1
- 2.3.0
- 2.2.x-dev
- 2.2.2
- 2.2.1
- 2.2
- 2.1.0
- 2.0.x-dev
- 2.0.0
- 2.0.0-rc1
- 2.0.0-beta1
- 2.0.0-alpha9
- 2.0.0-alpha8
- 2.0.0-alpha7
- 2.0.0-alpha6
- 2.0.0-alpha5
- 2.0.0-alpha4
- 2.0.0-alpha3
- 2.0.0-alpha2
- 2.0.0-alpha1
- 1.x-dev
- 0.2.x-dev
- 0.2.1
- 0.2.0
- 0.1.x-dev
- dev-master
- dev-experiments/bootstrap
- dev-pulls/extendedState
This package is auto-updated.
Last update: 2024-08-27 03:39:33 UTC
README
概述
重要:此模块仅适用于开发和测试,在生产服务器上使用存在安全风险。 如果此模块安装在活站点上,任何用户都可能成为管理员,或执行其他恶意操作。
此模块在浏览器中启动测试会话,以便在干净状态下测试Silverstripe应用程序。通常,会话是在一个全新的数据库上启动的,只加载默认记录。还可以从YAML固定文件或数据库转储中加载更多数据。
会话持久保存在一个文件中,该文件在启动会话时生成。只要此文件存在,测试会话就被认为是进行的,无论是通过Web浏览器还是通过命令行执行。默认情况下,该文件存储在webroot的assets/TESTS_RUNNING-<id>.json
下。<id>值是存储在浏览器会话中的随机令牌,以便使测试会话特定于执行浏览器,并允许多人在同一webroot中使用自己的测试会话。
模块还在数据库中保留一些关于会话状态元数据,以便客户端也可以使用它。例如,silverstripe-behat-extension可以通过此模块API使用它,使我们能够引入一些灰盒测试技术。
该模块还充当Silverstripe Behat扩展的初始化器(Silverstripe Behat Extension)。这是Behat所必需的,因为Behat CLI测试运行器需要仅针对测试的浏览器连接持久化测试配置,该配置可在任意的URL端点上使用。例如,我们设置了一个测试邮件器,它将每封电子邮件写入一个临时数据库表,以便通过基于CLI的过程进行检查。
设置
只需在Silverstripe webroot中要求此模块(3.0或更高版本)
composer require --dev silverstripe/behat-extension
使用方法
您可以通过手动请求特定的URL来启动测试会话,并通过其他URL端点与之交互。
命令
dev/testsession
: 显示启动测试会话的选项dev/testsession/start
: 设置测试状态,最常见的是将构建测试数据库,并将您的浏览器会话修改为使用此数据库。请参阅下面的“参数”文档。dev/testsession/end
: 删除测试状态,并重置为原始数据库。dev/testsession/loadfixture?fixture=<path>
: 将固定文件加载到现有测试状态中。dev/testsession/clear
: 清空测试状态。dev/testsession/browsersessionstate
: 设置或取消设置浏览器会话状态(与测试会话状态不同)。使用查询参数定义状态。
虽然您可以使用界面设置测试会话状态,但通过“dev/testsession/start”上的查询参数以编程方式设置它们可能很有用。
fixture
: 以SapphireTest通常接受的格式加载YAML固定文件(请参阅固定文件格式文档)。路径应该是相对于webroot的。createDatabase
: 创建临时数据库。importDatabasePath
: 加载到新创建的临时数据库中的数据库转储的绝对路径。importDatabaseFilename
: 相对于TestSessionController.database_templates_path
的数据库转储文件名。requireDefaultRecords
: 包括模型类上定义的默认记录。数据库
:在当前浏览器会话中将一个替代的数据库名称设置为一个cookie。实际上并不创建数据库,这通常由SapphireTest::create_temp_db()
处理。注意:出于安全考虑,数据库名称限制在特定的命名规范内:以“ss_tmpdb”前缀和七个随机数字序列。这可以避免用户访问同一连接上的其他生产数据库。mailer
:Mailer
的子类,通常用于记录邮件而不是实际发送它们。datetime
:为所有框架操作设置一个模拟的日期。格式为"yyyy-MM-dd HH:mm:ss"(例如:"2012-12-31 18:40:59")。globalTestSession
:独立于当前浏览器会话激活测试会话,实际上将网站设置为测试会话模式,适用于所有用户的多个浏览器。仅在"dev"模式下可用。例如,在Chrome中创建一个全局测试会话,然后您可以在Firefox中共享会话数据。但是,如果在启动全局会话之前在某处启动了非全局会话,那么在浏览器中将优先考虑该非全局会话。
带有参数的示例用法
dev/testsession/start?database=ss_tmpdb_1234567&fixture=cms/tests/controller/CMSMainTest.yml