按名称过滤测试
¥Filtering tests by name
--test-name-pattern
命令行选项可用于仅运行名称与提供的模式匹配的测试,而 --test-skip-pattern
选项可用于跳过名称与提供的模式匹配的测试。测试名称模式被解释为 JavaScript 正则表达式。可以多次指定 --test-name-pattern
和 --test-skip-pattern
选项以便运行嵌套测试。对于执行的每个测试,也会运行任何相应的测试钩子,例如 beforeEach()
。未执行的测试将从测试运行器输出中省略。
¥The --test-name-pattern
command-line option can be used to only run
tests whose name matches the provided pattern, and the
--test-skip-pattern
option can be used to skip tests whose name
matches the provided pattern. Test name patterns are interpreted as
JavaScript regular expressions. The --test-name-pattern
and
--test-skip-pattern
options can be specified multiple times in order to run
nested tests. For each test that is executed, any corresponding test hooks,
such as beforeEach()
, are also run. Tests that are not executed are omitted
from the test runner output.
给定以下测试文件,使用 --test-name-pattern="test [1-3]"
选项启动 Node.js 将导致测试运行程序执行 test 1
、test 2
和 test 3
。如果 test 1
不匹配测试名称模式,那么它的子测试将不会执行,尽管匹配模式。同一组测试也可以通过多次传递 --test-name-pattern
来执行(例如 --test-name-pattern="test 1"
、--test-name-pattern="test 2"
等)。
¥Given the following test file, starting Node.js with the
--test-name-pattern="test [1-3]"
option would cause the test runner to execute
test 1
, test 2
, and test 3
. If test 1
did not match the test name
pattern, then its subtests would not execute, despite matching the pattern. The
same set of tests could also be executed by passing --test-name-pattern
multiple times (e.g. --test-name-pattern="test 1"
,
--test-name-pattern="test 2"
, etc.).
test('test 1', async (t) => {
await t.test('test 2');
await t.test('test 3');
});
test('Test 4', async (t) => {
await t.test('Test 5');
await t.test('test 6');
});
也可以使用正则表达式字面指定测试名称模式。这允许使用正则表达式标志。在前面的示例中,以 --test-name-pattern="/test [4-5]/i"
(或 --test-skip-pattern="/test [4-5]/i"
)启动 Node.js 将匹配 Test 4
和 Test 5
,因为该模式不区分大小写。
¥Test name patterns can also be specified using regular expression literals. This
allows regular expression flags to be used. In the previous example, starting
Node.js with --test-name-pattern="/test [4-5]/i"
(or --test-skip-pattern="/test [4-5]/i"
)
would match Test 4
and Test 5
because the pattern is case-insensitive.
要将单个测试与模式匹配,你可以使用其所有祖级测试名称作为前缀,并用空格分隔,以确保它是唯一的。例如,给定以下测试文件:
¥To match a single test with a pattern, you can prefix it with all its ancestor test names separated by space, to ensure it is unique. For example, given the following test file:
describe('test 1', (t) => {
it('some test');
});
describe('test 2', (t) => {
it('some test');
});
使用 --test-name-pattern="test 1 some test"
启动 Node.js 将仅匹配 test 1
中的 some test
。
¥Starting Node.js with --test-name-pattern="test 1 some test"
would match
only some test
in test 1
.
测试名称模式不会更改测试运行程序执行的文件集。
¥Test name patterns do not change the set of files that the test runner executes.
如果同时提供了 --test-name-pattern
和 --test-skip-pattern
,则测试必须满足这两个要求才能执行。
¥If both --test-name-pattern
and --test-skip-pattern
are supplied,
tests must satisfy both requirements in order to be executed.