2015-09-02 5 views
2

Я пытаюсь создать скрипт автоматизации тестирования с использованием groovy. Мой шаблон ввода похож на переменную myXMLgroovy xml синтаксический анализ и модификация

Я читаю входные данные из файла excel и заменяю значения и запускаю запрос через SOAPUI.

мой код, как этот

def myXML ='''<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:com="xyz.org/common" xmlns:fin="xyz.org/finance"> 
<fin:myBalance> 
    <com:loginName>test</com:loginName> 
    <fin:params> 
     <fin:name value="username"/> 
     <fin:Id value="12345"/> 
     <fin:nickname value="usr1"/> 
    </fin:params> 
</fin:myBalance> 
</soapenv:Body> ''' 

    def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context) 
    def reqHolder = groovyUtils.getXmlHolder("InputReq#Request") 

reqHolder.namespaces['soapenv']= 'http://schemas.xmlsoap.org/soap/envelope/'; 
reqHolder.namespaces['com']= 'xyz.org/common'; 
reqHolder.namespaces['fin']= 'xyz.org/common'; 

reqHolder.setNodeValue("//fin:myBalance[1]/${newTag.getContents()}[1]", 
         "${newValue.getContents()}"); 

Если я хочу, чтобы изменить значение узла это работает отлично. Но я не могу найти способ изменить атрибут с помощью reqHolder. Скажем, я хочу изменить fin: Id value = "12345" to "6789"

Есть ли способ изменить?

+0

Проще говоря, вы должны использовать свойства. то есть Have '' и определить настраиваемое свойство в идентификаторе теста с любым желаемым значением. Каждый раз, когда вы можете обновлять вручную или автоматически с помощью groovy script 'context.testCase.setPropertyValue ('Id', newValue)' – Rao

ответ

1

Вместо использования API SoapUI вы можете попробовать использовать Groovy в XmlParser. С этим вы можете изменять атрибуты. Например:

def xml = '<root><one a1="uno!"/><two>Some text!</two></root>' 
def rootNode = new XmlParser().parseText(xml) 
assert rootNode.one[0][email protected] == 'uno!' 

Источник: http://docs.groovy-lang.org/latest/html/api/groovy/util/XmlParser.html

Что вам нужно сделать, это получить хт, например:

def response = context.testCase.testSteps['Properties'].properties['response'].value 

Другие советы по обработке XML здесь: http://www.robert-nemet.com/2011/11/groovy-xml-parsing-in-soapui.html

Другой способ получения XML: Groovy script to get the request xml

Вы можете найти более подробную информацию о XML-обработке Groovy здесь: http://groovy-lang.org/processing-xml.html

Смежные вопросы