1
アサーションを入れたいテストケースがあります。SoapUIのテストケースをアサーションします(失敗の理由あり)
私はアサーションの失敗の理由を提供する必要があります。 XML形式から
私の出力は以下の通りである:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server</faultcode>
<faultstring>XYZ-001: input is wrong</faultstring>
<detail>
<con:fault xmlns:con="http://www.bea.com/wli/sb/context">
<con:errorCode>XYZ-001</con:errorCode>
<con:reason>input is wrong</con:reason>
<con:location>
<con:node>PipelinePairNode1</con:node>
<con:pipeline>PipelinePairNode1_response</con:pipeline>
<con:stage>stage1</con:stage>
<con:path>response-pipeline</con:path>
</con:location>
</con:fault>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
私の望ましい結果は、XMLののfaultStringノードであるべきです。このため
私はこのコードを使用するXPathアサーションを試してみました:
declare namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/';
declare namespace con='http://www.bea.com/wli/sb/context';
boolean('/soapenv:Envelope/soapenv:Body/soapenv:Fault/')
を、私は期待出力として真置きます。 それが他の何らかの理由与えていたのJUnitレポート生成後:また
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def requsetHolder = groovyUtils.getXmlHolder(messageExchange.requestContent)
def responseHolder = groovyUtils.getXmlHolder(messageExchange.responseContent)
def refNum = responseHolder.getNodeValue("soapenv:Envelope/soapenv:Body/soapenv:Fault/")
def testrunner = context.getTestRunner();
if (refNum != null){
testrunner.fail("soapenv:Envelope/soapenv:Body/soapenv:Fault/faultstring")
}
が、運今回時刻:
Cancelling due to failed test step
<h3><b>Failure Failed</b></h3><pre>[XPath Match] XPathContains comparison failed for path [declare namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/';
declare namespace con='http://www.bea.com/wli/sb/context';
boolean('/soapenv:Envelope/soapenv:Body/soapenv:Fault/')], expecting [false], actual was [true]
</pre><hr/>
を私は次のスクリプトを使用してのGroovyを進めます。 JUnitの失敗の理由は:
Cancelling due to failed test step
<h3><b>Failure Failed</b></h3><pre>[Script Assertion] net.sf.saxon.trans.XPathException: XPath syntax error at char 46 on line 2 in {...pe/soapenv:Body/soapenv:Fau...}:
Unexpected token "<eof>" in path expression
</pre><hr/>
ので、私はグルーヴィーまたはXPathのいずれかでアサーションを使用してJUnitの出力での私のカスタム理由を生成することが可能な任意の方法があります。
あなたの説明から 'Xpath Assertion'に' true'の代わりに 'expecting [false]'を追加したようです。 – Rao
いいえ、テストケースに失敗した理由は、XMLのfaultタグに記述された理由になります。しかし、ここで理由は異なるものです。 xpathかgroovyのどちらかを使って、assertでカスタムエラーメッセージを記述できる方法はありますか? – Sarvesh
Hmm。、はっきりしていません。あなたはいくつかの詳細を例文とともに追加しますか? – Rao