Configuration 为所有功能设置url
我的问题看起来很像,但公认的答案与我的目标用法不符: 我想在Configuration 为所有功能设置url,configuration,karate,Configuration,Karate,我的问题看起来很像,但公认的答案与我的目标用法不符: 我想在initialize.feature文件中一次性设置url,以后再也不设置它。换言之,我不想用以下相同的语句将每个功能文件都弄乱: * url baseUrl 我的baseUrl值是基于karate.env设置的,例如https://localhost适用于本地环境和http://prod.env.com用于prod。它不会改变 路径将在功能文件中更改,因为我们测试不同的端点 我尝试了以下设置: 在空手道配置.js中: 在初始化
initialize.feature
文件中一次性设置url
,以后再也不设置它。换言之,我不想用以下相同的语句将每个功能文件都弄乱:
* url baseUrl
我的baseUrl
值是基于karate.env
设置的,例如https://localhost
适用于本地
环境和http://prod.env.com
用于prod
。它不会改变
路径
将在功能文件中更改,因为我们测试不同的端点
我尝试了以下设置:
- 在
中:空手道配置.js
- 在
:初始化功能中
initialize.feature
文件时正确打印了baseUrl
但在随后执行的任何功能中,我都会得到以下错误:
some-test.feature:24 - url not set, please refer to the keyword documentation for 'url'
是否可以只在我的initialize.feature
文件中设置url
,以后再也不能设置
谢谢。不,你不能。您必须在每个功能文件中至少执行一次
*url baseUrl
。这有多种原因-其中之一是可读性和可维护性,如果您查看-请注意,您可以在第二次调用中忽略url
,因为您遵循的是剩余的模式
由于您可以在
后台执行*url baseUrl
,并继承所有其他场景
-s-这在实践中通常是正常的,并且在实际的API测试中,我们看到您确实需要在测试中切换url-s(例如,对于auth)。如果你对此感到非常强烈-你可以考虑一个拉动请求。FWIW这是2.5年来第一次有人要求这样做。好的,我明白了,谢谢。在我看来,我们应该能够像在一般编程中一样将常见的事情分解成因素,这是很自然的。@SimonBudin空手道在幕后使用“构建器模式”。在“触发”HTTP请求之前,您需要“设置”一些内容。url
只是其中之一。我已经提到,您可以在背景中对每个功能执行url
一次。
@ignore
Feature:
Scenario: Initialize
* print baseUrl
* url baseUrl
some-test.feature:24 - url not set, please refer to the keyword documentation for 'url'