Cucumber API参考

每个方法都可以从require('cucumber')返回的对象中获得。


defineParameterType({name, preferForRegexpMatch, regexp, transformer, useForSnippets})

定义一个新的参数类型,并可选地将输出参数转换为其他的参数。

  • name: 在Cucumber表达式中引用此类型的字符串。
  • regexp: 匹配参数的正则表达式(或正则表达式数组)。
  • transformer: 可选函数,将捕获的参数从字符串转换为传递给步骤定义的参数。如果未指定转换函数,则捕获的参数将保留为字符串。该函数可以是同步的,也可以返回转换后的Promise值。this指针指向当前的world对象,因此该函数可以委托给world对象的函数。注意,World代理函数不能使用箭头函数。
  • useForSnippets: 默认为true。这意味着此参数类型将用于生成未定义步骤的片段。如果regexp频繁匹配您不打算用作参数的文本,请用false来禁用其用于生成片段代码。
  • preferForRegexpMatch: 默认为false。如果使用正则表达式,并且希望此参数类型对应的regexp在匹配期间优先于其他参数类型,则设置为true

内置的参数类型包括:

  • int
  • float
  • string
    • 包含在单引号或双引号中
    • transformer会移除引号
  • word

示例:

JavaScript
const { defineParameterType } = require('cucumber');

defineParameterType({
  name: 'currency',
  regexp: /[A-Z]{3}/,
  transformer: s => s,
  useForSnippets: true,
  preferForRegexpMatch: true
});


After([options,] fn)

定义每个场景之后运行的hook。

  • options: 具有以下键的对象:
    • tags: 字符串标签表达式,用于仅将此hook应用于某些场景。有关更多信息,请参阅标签表达式
    • timeout: hook特定的超时,以覆盖默认超时。
  • fn: 一个函数,定义如下:
    • 第一个参数是一个对象,格式如下:{sourceLocation: {line, uri}, result: {duration, status}, pickle}pickle对象来自gherkin库。请参阅其结构示例 testdata/good/*.pickles.ndjson
    • 在使用异步回调接口时,最后一个参数为回调函数。

options也可以是一个字符串,用作简写指定标签tags

多个After hooks按照它们定义的 相反 顺序执行。

示例:

JavaScript
const { After } = require('cucumber');

After(function (scenario) {
  if (scenario.result.status === 'failed') {
    console.log('Scenario failed!');
  }
});


AfterAll([options,] fn)

定义在所有场景完成后运行的hook。

  • options: 具有以下键的对象:
    • timeout: 特定于hook的超时,以覆盖默认超时。
  • fn: 一个函数,定义如下:
    • 在使用异步回调接口时,最后一个参数为回调函数。

多个AfterAll hooks按照它们定义的相反顺序执行。

示例:

JavaScript
const { AfterAll } = require('cucumber');

AfterAll(function (callback) {
  console.log('All scenarios are done!');
  callback();
});


Before([options,] fn)

定义在每个场景之前运行的hook。与After hook类似,除了传给fn的第一个参数不具有result属性。

多个Before hooks按照它们定义的顺序执行。

示例:

JavaScript
const { Before } = require('cucumber');

Before(function (scenario) {
  console.log('About to start scenario:', scenario.sourceLocation.uri);
});


BeforeAll([options,] fn)

定义在所有场景之前运行的hook。与AfterAll具有相同的接口。

多个BeforeAll hooks按照它们定义的顺序执行。

示例:

JavaScript
const { BeforeAll } = require('cucumber');

BeforeAll(function (callback) {
  console.log('Starting all scenarios!');
  callback();
});


defineStep(pattern[, options], fn)

定义一个步骤。别名:Given, When, Then.

  • pattern: 一个正则表达式或字符串模式,用于与gherkin步骤匹配。
  • options: 具有以下键的对象:
    • timeout: 特定于步骤的超时,以覆盖默认超时。
    • wrapperOptions: 传递给定义函数包装器的特定于步骤的选项。
  • fn: 一个函数,应该定义如下:
    • 针对正则表达式中的每个捕获应该有一个参数匹配。
    • 如果Cucumber步骤有一个文档字符串或数据表,会有一个额外的参数。
    • 在使用异步回调接口时,最后一个参数是回调函数。

示例:

JavaScript
const { Given, When, Then } = require('cucumber');

Given('用户在登录页面', function () {
  // 代码实现
});

When('用户输入用户名 {string} 和密码 {string}', function (username, password) {
  // 代码实现
});

Then('用户应该成功登录', function () {
  // 代码实现
});


setDefaultTimeout(milliseconds)

设置异步步骤的默认超时时间。默认为5000毫秒。

示例:

JavaScript
const { setDefaultTimeout } = require('cucumber');
setDefaultTimeout(10000); // 设置默认超时为10秒


setDefinitionFunctionWrapper(fn, options)

设置一个用于包装步骤/hook定义的函数。使用时,结果会再次包装以确保它与原始步骤/hook定义的长度相同。options是特定于步骤的wrapperOptions,可以是未定义的。

示例:

JavaScript
const { setDefinitionFunctionWrapper } = require('cucumber');

setDefinitionFunctionWrapper((fn) => {
  return function () {
    console.log('Before step');
    fn.apply(this, arguments);
    console.log('After step');
  };
});


setWorldConstructor(constructor)

设置一个自定义的world构造函数,以覆盖默认的world构造函数:

JavaScript
function World({attach, parameters}) {
  this.attach = attach;
  this.parameters = parameters;
}

  • attach - 在一个函数hook/步骤定义中用来添加报告附件
  • parameters - 通过命令行传入的world参数。

注意: World构造函数在v0.8.0以后被严格同步。

示例:

JavaScript
const { setWorldConstructor } = require('cucumber');

function CustomWorld() {
  this.variable = 0;

  this.setTo = function (number) {
    this.variable = number;
  };

  this.incrementBy = function (number) {
    this.variable += number;
  };
}

setWorldConstructor(CustomWorld);

results matching ""

    No results matching ""