如何在每个场景 xml 中设置变量
How to set a variable in the xml per scenario
我有这个 xml 下面我在后台设置:
* def Request =
"""
<new1:Account>
<shar:PaidMode>#(PaidMode)</shar:PaidMode>
<shar:BillCycleCredit>#(BillCycleCredit)</shar:BillCycleCredit>
<shar:CreditCtrlMode>#(CreditCtrlMode)</shar:CreditCtrlMode>
<new1:BillCycleType>#(BillCycleType)</new1:BillCycleType>
</new1:Account>
"""
经过我的测试如下:
Scenario: Create first subscriber
* def PaidMode = '0'
And request Request
When method Post
Then status 200
* print Request
但我似乎无法将此 PaidMode 设置为 0 :( 我读过这个
which led me to this (thank you Peter!)
https://github.com/karatelabs/karate#embedded-expressions
这很简单,我敢肯定,我做错了什么对我来说并不明显
我觉得一切都很好。但是:确保在声明 xml 变量 'body' 之前设置变量 'paidMode' !也许这就是你错过的。
试试这个应该有效的例子:
* def paidMode = 'foo'
* def body =
"""
<new1:Account>
<shar:PaidMode>#(paidMode)</shar:PaidMode>
</new1:Account>
"""
* url 'https://httpbin.org/anything'
* request body
* method post
现在,如果您确实需要 XML“预设”,您可以使用 set
关键字进行如下更新:
* def body =
"""
<new1:Account>
<shar:PaidMode></shar:PaidMode>
</new1:Account>
"""
* set body/Account/PaidMode = 'foo'
一个技巧是从文件中 read
XML,这样您就可以得到 re-use 的好处,您似乎想要这样做:
* def paidMode = 'foo'
* def body = read('some.xml')
我有这个 xml 下面我在后台设置:
* def Request =
"""
<new1:Account>
<shar:PaidMode>#(PaidMode)</shar:PaidMode>
<shar:BillCycleCredit>#(BillCycleCredit)</shar:BillCycleCredit>
<shar:CreditCtrlMode>#(CreditCtrlMode)</shar:CreditCtrlMode>
<new1:BillCycleType>#(BillCycleType)</new1:BillCycleType>
</new1:Account>
"""
经过我的测试如下:
Scenario: Create first subscriber
* def PaidMode = '0'
And request Request
When method Post
Then status 200
* print Request
但我似乎无法将此 PaidMode 设置为 0 :( 我读过这个
which led me to this (thank you Peter!) https://github.com/karatelabs/karate#embedded-expressions 这很简单,我敢肯定,我做错了什么对我来说并不明显
我觉得一切都很好。但是:确保在声明 xml 变量 'body' 之前设置变量 'paidMode' !也许这就是你错过的。
试试这个应该有效的例子:
* def paidMode = 'foo'
* def body =
"""
<new1:Account>
<shar:PaidMode>#(paidMode)</shar:PaidMode>
</new1:Account>
"""
* url 'https://httpbin.org/anything'
* request body
* method post
现在,如果您确实需要 XML“预设”,您可以使用 set
关键字进行如下更新:
* def body =
"""
<new1:Account>
<shar:PaidMode></shar:PaidMode>
</new1:Account>
"""
* set body/Account/PaidMode = 'foo'
一个技巧是从文件中 read
XML,这样您就可以得到 re-use 的好处,您似乎想要这样做:
* def paidMode = 'foo'
* def body = read('some.xml')