2016-06-21 5 views
1

を使用してテストケースの間の地図を渡すために:どのように私はGroovyのを使用してSOAPUIで次の操作を実行したいプロパティ

TestCase1にすると、データベースから値(姓、FIRSTNAME)を選択して、動的な値でMapを作成します。def Map = [Login :"$Login", Nom: "$Nom"]

私はこの のために、私はプロパティに私のマップを置くしようとしている、私のマップが別のTestCaseに転送する必要があります

testRunner.testCase.setPropertyValue("Map", Map) 

しかし、私はエラーがあります。

groovy.lang.MissingMethodException: No signature of method: com.eviware.soapui.impl.wsdl.WsdlTestCasePro.setPropertyValue() is applicable for argument types: (java.lang.String, java.util.LinkedHashMap) values: [OuvInfoPersoMap, [Login:dupond0001, Nom:Dupond]] Possible solutions: setPropertyValue(java.lang.String, java.lang.String), getPropertyValue(java.lang.String) error at line: 123

私は

context.testCase.metaClass.map = Map 
log.info context.testCase.map 

metaClassグルーヴィーなプロパティを使用することが提案されている。しかし、私は、私の場合には十分にそれを考えていない、インターネット上でいくつかの記事を見つけました。

私が使用してTestcase2にマップを渡すことができるようにしたいと思います:

createMap = testRunner.testCase.testSuite.project.testSuites.testCases["TestCase1"] 
createMap.map 

がうまくいけば、あなたはこの問題を解決する私を助けることができます。

おかげで正しくsetPropertyValueメソッドが期待するとプロパティ名用とプロパティ値のString、コメントで説明したよう@SiKing

+0

私はあなたのユースケースが何であるかわかりません。テストケースは独立しているべきであるという一般的なプラクティス。あなたのユースケースは何ですか?また、2つ以上の値だけを必要としますか?ところで、マップをテストケースプロパティに値として設定することはできません。 – Rao

+0

「第1のテストケース」を実行することができるのは、第2のテストケースのgroovyスクリプトをコンテキストを使用して実行できる場合のみです。しかし、プロパティを介してではありません。 – Rao

+0

mapの代わりに、各プロパティをString値として設定できます。 – Rao

答えて

1

を進めます。

@Raoが一般的に示唆するように、testCaseの実行は独立している必要がありますが、これは技術的に求めるものです。

だからあなたのケースのための可能な解決策は、それがsetPropertyValue(Strig propertyName, String value)メソッドを使用して保存することも可能だという順にStringからMapをシリアル化するために最初テストケースであり、次いで第2 テストケースで、次のようなものを、それをdeserialitzeコードは動作する必要があります。

のTestCase 1

inspect() methodを使用してマップをシリアライズし、プロパティとして保存します。

def map = ['foo':'foo','bar':'bar', 'baz':'baz'] 
testRunner.testCase.setPropertyValue('map',map.inspect()) 

TestCase2

Deserialitze Eval.me(String exp):を使用してStringプロパティ:

// get the first testCase 
def testCase1 = testRunner.testCase.testSuite.testCases["TestCase1"] 
// get the property 
def mapAsStr = testCase1.getPropertyValue('map') 
// deserialize the string as map 
def map = Eval.me(mapAsStr) 
assert map.foo == 'foo' 
assert map.bar == 'bar' 
assert map.baz == 'baz' 
関連する問題