首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SOAP断言帮助:验证Total属性和Total

SOAP断言帮助:验证Total属性和Total
EN

Stack Overflow用户
提问于 2016-03-02 16:01:52
回答 2查看 1.7K关注 0票数 0

我在Google和Stackoverflow中搜索,没有找到任何有用的信息,所以我决定发布问题。

我正在从JSON中的API获得响应。

代码语言:javascript
复制
{
"CouponCode": [{
    "id": 56,
    "name": "BlackFriday"
}, {
    "id": 58,
    "name": "ThanksGiving"
}, {
    "id": 62,
    "name": "New Year"
}]}

我需要添加断言,这将计算出总共有3个id和3个名称。

所有ID和名称都不是空的。我们不想发送空属性值。

我正在使用SOAP开源。请提供准确的代码或确切的参考。

确切地说,断言需要

  • 查找总Ids和名称,这将是大小
  • 查找总Ids和名称大小。

如果Id为3,Id为3,则值为three..if,则JSON与本例类似,断言将失败。

代码语言:javascript
复制
{
"CouponCode": [{
    "id": 56,
    "name": "BlackFriday"
}, {
    "id": 58,
    "name": "ThanksGiving"
}, {
    "id": "",
    "name": "New Year"
}]}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-02 16:55:47

下面的groovy script使用json方法检查预期的结果。

在测试用例中的groovy script步骤之后添加rest request步骤。

提取同样的数独代码。

  1. 阅读json文本。如果不想使用固定响应,请从前一步响应中读取它。创建对象。
  2. 确保您有所期望的id计数和名称。您还可以在测试用例自定义属性中定义它们,以防不想使用固定值并在脚本中每次更改。
  3. 查找所有id计数并使用期望值进行检查,并在发生故障时显示错误消息。
  4. 类似于步骤3,对名称执行断言。
代码语言:javascript
复制
//for testing using fixed response, you may aslo assign dynamic response.
def jsonText = '''
{
"CouponCode": [{
    "id": 56,
    "name": "BlackFriday"
}, {
    "id": 58,
    "name": "ThanksGiving"
}, {
    "id": 62,
    "name": "New Year"
}]}'''

def coupons =  new groovy.json.JsonSlurper().parseText(jsonText).CouponCode
//You may also read these values from test case properties
def expectedIdCount = 3
def expectedNameCount = 3
//assert the expected id count with find all coupon ids count of json response
assert expectedIdCount == coupons.findAll{it.id}.size(), "Coupon id count does not match"
//assert the expected name count with find all coupon names count of json response
assert expectedNameCount == coupons.findAll{it.name}.size(), "Coupon name count does not match"

对于rest步骤,也可以使用script assertion实现同样的目的,这将避免额外的groovy脚本步骤。但是,它可能需要对脚本进行很少的修改,如下所示。

如何动态读取json响应?

来自脚本断言的

使用下面的线,并从上面移除固定的jsonText。

def jsonText = messageExchange.response.responseContent

从Groovy脚本步骤//替换def jsonText = context.expand('${ReplaceStepName#Response}')下面的rest请求步骤名

如何读取预期结果的测试用例级属性,而不是脚本中的硬编码值?

id定义一个测试用例级别的属性,比如EXPECTED_ID_COUNT,并像您提到的那样提供值3,同样,也为name定义。

//read in script these properties

def expectedIdCount = context.testCase.getPropertyValue('EXPECTED_ID_COUNT') as Integer

票数 1
EN

Stack Overflow用户

发布于 2016-03-02 16:28:04

有几种可能的解决方案。最简单的方法是使用XPath断言;请记住,在内部,SoapUI可以将所有内容转换为XML。

代码语言:javascript
复制
count(//*:id)

预期结果:

代码语言:javascript
复制
3

同样适用于您的name

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35752235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档