我在 Laravel 中使用 Codeception。我尝试编写验收测试。
我想检查 url 是否存在,这意味着我不会收到 404/403/等错误。所以响应应该是 200。
我怎样才能做到这一点?或者我错了,我不应该在验收测试中检查这一点,而是使用“我可以看到一些东西”?我只是对使用有点困惑$I->see,因为标签可能会被更改/更正,所以依赖标签是值得怀疑的。我只是想检查一下至少我没有看到“未找到”。但根据 404 页面设计,可能不会出现“未找到”这一行(如果我只是将“404”放在 404 页面中会怎样)
我正在使用 Codeception 构建 API 验收测试。
我熟悉那里的单元测试,并且在运行类的所有测试之前,我在这些类中使用了 setUp 方法来实现所需的所有逻辑。
但是我没有找到类似的验收测试。
请注意,我使用的是“类”方法,而不是过程方法。
所以我有一个这样的课程...
class ResourceCest {
public function _beforeSuite(ApiTester $I)
{
// Ideally this would work, but it doesn't.
}
public function _before(ApiTester $I)
{
$I->am('Api Tester');
}
public function somethingThatIWantToExecute(ApiTester $I)
{
$I->sendGet('something');
// etc
}
}
Run Code Online (Sandbox Code Playgroud)
我可以创建像 setUp 这样的方法,但随后 Codeception 将其作为测试执行,从而在运行测试时输出一些内容。
使用键 --html运行测试 生成带有结果的 html(默认值:“report.html”) 生成名为 report.html 的 html 报告。如何为 html 报告文件设置另一个名称?
我正在使用 Codeception 框架在 Laravel 5 应用程序中执行验收测试。我想使用单独的数据库进行测试,以防止真实数据库在测试过程中发生变化。我根据 Codeception 文档配置了 .yml 文件。但无论如何,真正的数据库都会受到影响。这是我的配置文件:
/codeception.yml
actor: Tester
paths:
tests: tests
log: tests/_output
data: tests/_data
support: tests/_support
envs: tests/_envs
settings:
bootstrap: _bootstrap.php
colors: true
memory_limit: 1024M
extensions:
enabled:
- Codeception\Extension\RunFailed
modules:
config:
Db:
dsn: 'mysql:host=localhost;dbname=realDB'
user: 'root'
password: 'secret'
dump: 'tests/_data/dump.sql'
Run Code Online (Sandbox Code Playgroud)
/tests/acceptance.suite.yml
class_name: AcceptanceTester
modules:
enabled:
- WebDriver:
url: 'http://localhost:8000/'
browser: firefox
- Laravel5:
part: ORM
cleanup: false # can't wrap into transaction
Db:
populate: true
cleanup: true
- \Helper\Acceptance
Run Code Online (Sandbox Code Playgroud)
realDB 是真正的数据库,在执行验收测试后会发生变化。我在acceptance.suite.yml 中尝试了不同的清理案例:1) cleanup: false …
codeception 将每个公共方法都视为测试。但是我有一个需要公开的方法。然而,这不是一个测试。我可以以某种方式注释它来告诉代码接收它不应该作为测试运行吗?
我在使用 Codeception 在 PhpStorm 中为我的应用程序运行测试时出错。我的代码正在通过 Vagrant 运行。
在我的用于 Codeception 测试的index.php的第一行是:
ini_set('xdebug.max_nesting_level', 200);
Run Code Online (Sandbox Code Playgroud)
我通过自制软件安装了 xdebug,这在我的 php 版本输出中:
PHP 7.1.12 (cli) (built: Dec 2 2017 12:15:25) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans
Run Code Online (Sandbox Code Playgroud)
当我运行测试时,虽然我在 PhpStorm 事件日志中收到错误:
Cannot accept external Xdebug connection: Cannot evaluate expression 'isset($_SERVER['PHP_IDE_CONFIG'])'
Run Code Online (Sandbox Code Playgroud)
在我的 PhpStorm 设置中,我将其设置为接受外部连接:
在 php info 我有可用的 xdebug 设置:
$ php -i | grep xdebug
Additional …Run Code Online (Sandbox Code Playgroud) 我红色了大量的文档和帖子,似乎几乎每个人都对 yii2 代码接收测试有问题。我的问题是,当我尝试生成单位套装时./vendor/bin/codecept generate:test unit Login出现错误
In Configuration.php line 306: Suite unit was not loaded
Run Code Online (Sandbox Code Playgroud)
什么会导致这种情况?没有在任何地方找到答案。谢谢你!
编辑-unit.suite.yml
suite_namespace: backend\tests\unit
suite_class: UnitTester
actor: UnitTester
modules:
enabled:
- Yii2:
part: [orm, email, fixtures]
- Asserts
Run Code Online (Sandbox Code Playgroud) 根据 Codeption文档,我应该能够HttpException通过运行以下命令来捕获:
$I->expectException(HttpException::class, function () {
$I->amOnRoute('that-doesnt/exist');
});
Run Code Online (Sandbox Code Playgroud)
然而我却得到了错误:
[RuntimeException] 调用未定义的方法FunctionalTester::expectException
我在用Codeception 2.4.3
我正在写一个不像我预期的那样工作的测试.
我需要使用一些抓取器,然后在测试运行时转储到屏幕上.
我怎么能这样做?如何回声,而不是用户如何抓取; 我可以使用抓取器,但我不知道如何在测试运行时回声.
我最近将我的Symfony项目升级到2.8版,然后采用了Symfony 3目录结构.现在,当我运行Codeception时,它给出了以下错误消息:
Acme\SiteBundle\Entity\Acme\User类中的注释"@Doctrine\ORM\Mapping\Entity"不存在,或者无法自动加载."
所以Doctrine注释不是自动加载的.我知道Symfony 3在自动加载方面做了一些改动.这对Codeception有什么影响,需要调整哪些才能使它正常工作?