当前位置: 首页 > 知识库问答 >
问题:

cucumber示例在不同的功能/场景中重用

胡劲
2023-03-14

我用cucumber已经有一段时间了,我偶然发现了一个问题:

实际问题:

有没有解决方案从单个文件/db中导入示例,特别是使用cucumber作为示例?或者有没有办法在步骤中定义变量作为示例?或者,当我启动功能文件/场景时,是否有选项将示例作为变量发送?

问题:

我有几个场景,我想一遍又一遍地使用完全相同的例子。

这听起来很简单,但示例表非常大(更具体地说,它包含世界上所有国家及其相应的大陆)。因此重复它会非常麻烦,特别是如果表需要更改(我需要单独更改表的所有实例

并发症:

我有一个重新运行函数,它知道特定的例子何时失败,并在测试完成后重新运行它。

限制:

我不想编辑我的重新运行文件

相关:

我注意到这里已经有关于从csv导入的公开讨论:在cucumber中导入CSV作为测试数据?

然而,这种讨论对我来说是无效的,因为我有一个只知道处理例子的重新运行函数,而这里建议的解决方案破坏了这一点。

谢谢大家!

共有1个答案

易刚捷
2023-03-14

您可以将CSV和其他外部文件系统与使用不同BDD语法的QAF一起使用。

如果你想使用cucumber steps或者cucumber runner,你可以使用QAF-cucumber和BDD2(首选)或者小cucumber语法。QAFcucumber将启用cucumber的外部测试数据和其他qaf功能。

下面是使用BDD2语法的示例功能文件,可以使用TestNG或Cucumber运行器运行。

Feature: feature uses external data file

@datafie:resources/${env}/testdata.csv
@regression 
Scenario:  Another scenario exploring different combination using data-provider
    Given a "${precondition}"
    When an event occurs
    Then the outcome should "${be-captured}"   

testdata.csv文件可能类似于:

TestcaseId,precondition,be-captured
123461,abc,be captured
123462,xyz,not be captured

您可以使用TestNG或Cucumber运行器运行。您也可以使用任何内置数据提供程序或自定义。

 类似资料:
  • 我有几个测试如下: 对于每个测试,我应该添加相同的表格示例。 有没有办法提取这个表,以便在所有测试中使用同一个表?

  • 真希望有人能帮上忙。 在cucumber的“示例”中是否可以使用两个不同的外部数据文件?如下所示: @play_movie 场景概述:在网站上播放视频 在这个场景中有一个数据文件,但是如果我想在这个场景中使用两个或更多不同的数据文件呢。有可能用cucumber做吗? 我使用Java作为编码语言。 谢谢

  • 尝试在企业项目中进行PIT突变测试。让它做现有的JUNit测试,但我们也有很多Cucumber测试需要作为度量的一部分。在maven项目中添加了pit cucumber插件,但未找到任何场景。不确定插件的配置中是否有我看不到的秘密。 我得到以下输出: 信息:向minion发送0个测试类

  • 任何帮助都将非常感谢! 谢里奥

  • 接口说明 查询场景(分页查询场景列表,带有检测示例场景功能) 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 GET /wish3dearth/api/scene/v1.0.0/pageList 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 token string header 是 当前登录用户的TOKEN titl

  • 接口说明 查询场景(分页查询场景列表,带有检测示例场景功能) 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 GET /wish3dearth/ap

  • 我尝试在cucumber中执行特性后执行一个脚本来清理数据库。我使用前后挂钩的方式如下: 对于before,我可以避免使用静态变量在每个场景之前调用脚本。但不知道如何为后钩子做: 有没有办法捕获最后一个方案是否已经执行,并且仅在满足该条件时才触发 clearData()?有没有更优雅的方法?