我们能否实现';过滤示例';基于karate.env
我们是否能够实现我们现有的“示例过滤” 下面的示例:我们能否实现';过滤示例';基于karate.env,karate,Karate,我们是否能够实现我们现有的“示例过滤” 下面的示例: * def request = { item: '#(item)' } Examples: |karate.env: |item | |@dev |778983-110833-110834| |@qa |848079-419456-419457| 我们需要实现的是: 空手道DSL基于 karate.env的当前值 空手道必须创建一个请求={项: “77898
* def request = { item: '#(item)' }
Examples:
|karate.env: |item |
|@dev |778983-110833-110834|
|@qa |848079-419456-419457|
我们需要实现的是:
{项:
“778983-110833-110834”}
如果我在开发环境中运行测试&{item:
“848079-419456-419457”}
如果我在qa中运行测试我无法通过使用karate.env属性实现这一点,但使用标记实现了这一点,请参考下面的示例:
Feature:
Background:
* url 'https://reqres.in/api'
* configure headers = { 'Content-Type': 'application/json'}
Scenario Outline:
* def reqJson = { "name": "name", "job": "<item>"}
And path 'users'
And request reqJson
When method post
Then status 201
And match response.job == '<item>'
@dev
Examples:
| item |
| 111|
@qa
Examples:
| item |
| 222|
功能:
背景:
*url'https://reqres.in/api'
*配置标题={'Content Type':'application/json'}
情景大纲:
*def reqJson={“名称”:“名称”,“作业”:“”}
和路径“用户”
并请求reqJson
当方法发布时
然后是状态201
并匹配response.job=''
@发展
示例:
|项目|
| 111|
@质量保证
示例:
|项目|
| 222|
在命令行上触发environment=qa:mvn测试-Dcucumber.options=“--tags@qa”
在命令行上触发environment=dev:mvn测试-Dcucumber.options=“--tags@dev”
由于我想使用karate.env属性,请告诉我是否有其他方法可以实现此目的。我想您正在寻找以下内容: Cucumber/Gherkin语法的一个鲜为人知的功能是能够在一堆示例中标记特定的行!您必须为每个标记重复示例部分。下面的示例将此功能与上述高级功能结合起来 请记住,空手道可以读取JSON(或CSV)文件,您可以使用它来驱动
示例:
最后,我不推荐这么多,但如果您希望实现不为特定karate.env
值运行测试的逻辑,您可以通过以下方式执行此操作:
只需在
场景之后添加该行:
,测试将在需要时跳过。谢谢,我会尝试一下:我在上面的问题中添加了一个工作示例,请验证它,并确认是否有方法在标记中使用“karate.env”来实现它。我查看了文档上的“条件逻辑”。标签在这里更适合我们的用例。我希望标签中有@karate.env=dev这样的东西,但我觉得这是一个太多的问题了。:)@Sud-空手道是开源的,你可以贡献代码而不是问:p对于那些登陆这里尝试这样做的人,我建议另一种方法,你可以调用这样的功能:*调用read('foo-'+karate.env+'.feature')
-记住空手道可以读取JSON(或CSV)文件,你可以使用它来驱动示例
:
Scenario Outline: examples partitioned by tag
* def vals = karate.tagValues
* match vals.region[0] == '<expected>'
@region=US
Examples:
| expected |
| US |
@region=GB
Examples:
| expected |
| GB |
* call read('foo-' + karate.env + '.feature')
* if (karate.env == 'prod') karate.abort()