测试过滤

当您运行 ./vendor/bin/pest 时,Pest 默认会执行完整的测试套件。正如您可能预期的那样,运行单个测试是通过将测试名称作为第一个参数传递来完成的。

1./vendor/bin/pest tests/Unit/TestExample.php

本章将介绍更多关于如何过滤 Pest 执行的测试的方法。有关完整的 CLI API 参考,请参阅我们的 CLI API 参考

--bail

--bail 选项指示 Pest 在遇到第一个失败或错误时停止执行测试套件。

1./vendor/bin/pest --bail

--dirty

--dirty 选项指示 Pest 仅运行根据 Git 具有未提交更改的测试。当您为新功能开发一组测试并且不想每次调用 Pest 时都运行整个测试套件时,这通常很有用。

1./vendor/bin/pest --dirty

请注意,由于 Pest 的限制,使用 PHPUnit 语法编写的测试用例将始终被视为脏的。

--filter

使用 --filter 选项,可以运行与指定正则表达式模式匹配的测试。--filter 选项允许您根据测试输出描述中通常出现的任何信息(例如文件名、测试描述、数据集参数等)来过滤测试。

1./vendor/bin/pest --filter "test description"

--group

您可以利用 --group 选项选择性地运行属于特定组的测试。要了解如何将测试或文件夹分配到组,请参阅 分组测试 文档。

1./vendor/bin/pest --group=integration,browser

--exclude-group

--exclude-group 选项可用于排除特定测试组的执行。

1./vendor/bin/pest --exclude-group=integration,browser

--retry

如果测试之前失败了,您通常希望通过安排测试套件首先运行失败的测试来对它们进行排序。在这种情况下,您可以使用 --retry 选项。

--retry 标志通过优先考虑之前失败的测试来重新排序测试套件。如果没有过去的失败,套件将照常运行。但如果之前有失败,则这些测试将首先运行。

注意:请记住,如果您的 phpunit.xml 文件有两个测试套件(通常是单元测试和功能测试),此选项将通过首先运行失败的测试来对每个套件进行排序。这意味着有时,您可能会看到整个单元测试套件在 Pest 运行功能测试套件之前运行,其中之前失败的测试具有优先级。

1./vendor/bin/pest --retry

only()

如果您想在测试套件中运行特定的测试,可以使用 only() 方法。

1test('sum', function () {
2 $result = sum(1, 2);
3 
4 expect($result)->toBe(3);
5})->only();

随着代码库的增长,手动使用过滤运行测试可能会变得很繁琐。这就是跳过测试的用武之地。跳过测试是一个有用的功能,允许开发人员暂时从测试套件中排除特定测试,而无需完全删除它们: 跳过测试 →