数据表

当步骤包含 数据表 时,数据表作为对象传递给步骤定义函数。需要注意的是,数据表场景大纲中的示例表不同。数据表有多种读取方式,具体区分为是否包含列标题信息。我们可以通过以下方法访问数据表:

包含列标题信息的方法

  • hashes(): 将每一行转换为一个对象,列标题作为键,内容作为值,最终返回对象数组。
  • raw(): 直接以二维数组形式返回表格的内容,包含标题行。

不包含列标题信息的方法

  • rowsHash(): 将表格转换为一个对象,第一列作为键,第二列作为值。此方法适用于只有两列的数据表。
  • rows(): 返回二维数组,每一行作为一个一维数组,但不包括标题行。

示例

以下是一个包含数据表的 Feature 文件,展示了如何在步骤中使用数据表:

# language: zh-CN
功能: 用户登录验证

  场景: 使用数据表验证用户登录
    假如 我有以下用户信息
      | id     | password |
      | user01 | 123456   |
      | user02 | 123456   |
      | user03 | 123456   |
    那么 我应该能够输出表格的不同读取方式

为了处理上述 Feature 文件中的步骤,我们需要在步骤定义中实现读取数据表的逻辑。在步骤定义函数中,数据表被传入为参数 table,我们可以使用不同的方法读取数据表。以下代码展示了如何读取数据表并输出结果:

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

Given('我有以下用户信息', async function (table) {
  // 使用 table 数据表读取方法
  this.table_hashes = table.hashes();
  this.table_raw = table.raw();
  this.table_rowsHash = table.rowsHash();
  this.table_rows = table.rows();
});

Then('我应该能够输出表格的不同读取方式', async function () {
  console.log("table.hashes():", this.table_hashes);
  console.log("table.raw():", this.table_raw);
  console.log("table.rowsHash():", this.table_rowsHash);
  console.log("table.rows():", this.table_rows);
});

输出信息:

JavaScript
table.hashes(): [
  { id: 'user01', password: '123456' },
  { id: 'user02', password: '123456' },
  { id: 'user03', password: '123456' }
]
table.raw(): [
  [ 'id', 'password' ],
  [ 'user01', '123456' ],
  [ 'user02', '123456' ],
  [ 'user03', '123456' ]
]
table.rowsHash(): {
  id: 'password',
  user01: '123456',
  user02: '123456',
  user03: '123456'
}
table.rows(): [
  [ 'user01', '123456' ],
  [ 'user02', '123456' ],
  [ 'user03', '123456' ]
]

results matching ""

    No results matching ""