gpt4 book ai didi

karate - 是否可以覆盖被调用的功能文件中已在后台或场景中定义的参数?

转载 作者:行者123 更新时间:2023-12-02 09:14:22 25 4
gpt4 key购买 nike

https://github.com/intuit/karate#calling-other-feature-files

上面的链接包含调用功能文件以重用代码的示例。使用输入调用重用的特征文件

Background:
* configure headers = read('classpath:my-headers.js')
* def signIn = call read('classpath:my-signin.feature') { username:'john', password: 'secret' }
* def authToken = signIn.authToken

名为 my-signin.feature:

Scenario:
Given url loginUrlBase
And request { userId: '#(username)', userPass: '#(password)' }
When method post
Then status 200
And def authToken = response
...

在此示例中,my-signin.feature 必须使用输入的用户名和密码运行。我知道如果您有以下情况:

Background:
* def username = "foo"
* def password = "secret"

在 my-signing.feature 文件的顶部,尝试重用该功能文件的功能输入的参数将被覆盖。

我的问题是:如果重用是能够调用其他功能文件的主要兴趣,那么是否有办法让调用功能文件覆盖用户名和密码参数(如果它们已在后台定义)?

在我看来,让后台覆盖输入参数而不是反之亦然会使重用 *.feature 文件变得更加困难。我知道我发现我的项目有点令人沮丧,无法重用我已经编写的测试而不将可重用代码重构到另一个文件中。

最佳答案

Karate 中的任何调用功能都会有一个神奇变量 __arg,您可以在为调用脚本中的变量赋值之前检查这一点。

Background:
* def username = (__arg == null) ? "foo" : __arg.username
* def password = (__arg == null)? "secret" : __arg.password

这将检查传递的值,

  • 如果没有通过,它将分配默认值

* def signIn = call read('classpath:my-signin.feature')

  • 如果传递参数,则传递的参数将被赋值

* def signIn = call read('classpath:my-signin.feature') { 用户名: 'notfoo', 密码: 'notsecret' }

为了简单起见,除此之外不需要传递任何其他参数。

关于karate - 是否可以覆盖被调用的功能文件中已在后台或场景中定义的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56124053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com