SoapUI рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг, рдПрдХ рд╡реЗрдм рд╕реЗрд╡рд╛ рдЬреЛ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА рд▓реМрдЯрд╛рддреА рд╣реИ

рд╕рд╛рдмреБрди - рдорджрдж рдЪрд╛рд╣рд┐рдП

рд▓рдЧрднрдЧ рдЖрдзреЗ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рджрд┐рдП рдереЗ, рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЬреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ SOAP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╢рд╛рдВрдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕реЛрдкреБрдИ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ред рдпрд╣ рдХрд┐рддрдирд╛ рд╢рд╛рдирджрд╛рд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ, рдЗрд╕рдореЗрдВ рдПрдХ рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ рдФрд░ рдПрдХ рд╕рд╣рдЬ рдСрдирд▓рд╛рдЗрди рдорджрдж (рд╕рд╛рдмреБрдирдпреВрдЖрдИ.рдУрдЖрд░рдЬреА) рд╣рдо рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рдХреЗ рдмрд╛рд╣рд░ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕рдХреА рд╕рднреА рдЦреВрдмрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдмрд▓реНрдХрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ рдФрд░ рд╢рд╛рдпрдж, рдЗрд╕рд▓рд┐рдП, рдЕрдм рд░реВрд╕реА рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рдХреА рдкреВрд░реА рдХрдореА рд╣реИред рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рдорджрдж рдХрд┐рд╕реА рднреА рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдорджрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИ), рдФрд░ рд╕рднреА рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдореИрдиреБрдЕрд▓ рдЦреЛрдЬрдирд╛ рдХрд╛рдлреА рдХрдард┐рди рд╣реИред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ!

рдЖрдЬ рд╣рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░реЗрдВрдЧреЗ: рдЕрд░реНрдерд╛рддреН, рдПрдХ рд╕реЗрд╡рд╛ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рди рдЬреЛ рд╣рдореЗрдВ рдЗрди рддрддреНрд╡реЛрдВ рдХреА рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИ:
<item>
<FeedbackId>357</FeedbackId>
<RequestDate>2012-04-08T00:48:49.493</RequestDate>
<FeedbackStatusName></FeedbackStatusName>
<FeedbackTypeName></FeedbackTypeName>
<AuthorFullName> </AuthorFullName>
<FeedbackStatusId>1</FeedbackStatusId>
<FeedbackTypeId>1</FeedbackTypeId>
<AuthorUserId>69</AuthorUserId>
</item>


рдЬрдм рдЗрд╕реА рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдп рдиреЗ рдореБрдЭреЗ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛, рддреЛ рдореИрдВрдиреЗ рдХрд╛рдпрд░рддрд╛ рд╕реЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдЬрд╛рдВрдЪрд╛ (xpath check рд╕реЗрдЯ рдХрд┐рдпрд╛) рдФрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдореБрдЭреЗ рдЙрддреНрдкрд╛рдж рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордп рдирд╣реАрдВ рд╣реИ ...)ред рдЕрдм рдореИрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВ, рдФрд░ рд╕рд╛рде рд╣реА рд╕рднреА рдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реЗрдВ рдХрд┐ рдореЗрд░реА рд╡рд┐рдзрд┐ рдХрдИ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬреЛ рдЖрджрд░реНрд╢ рдпрд╛ рдЗрд╖реНрдЯрддрдо рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдФрд░ рдореБрдЭреЗ рдЕрдиреНрдп рддрд░реАрдХреЗ рднреА рд╕реАрдЦрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ - рдореИрдВ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ, рдЕрдиреБрднрд╡, рдХрд▓реНрдкрдирд╛рдУрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ ...

рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕реЗрд╡рд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕рдорд╛рди рд╕реВрдЪреА рдФрд░ рдЙрд╕ рдЖрдзрд╛рд░ рдХреЛ рд▓реМрдЯрд╛рддреА рд╣реИ рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдбреЗрдЯрд╛ рдЦреАрдВрдЪрддрд╛ рд╣реИред рдФрд░ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдЪрдпрди рдХреЛ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реЛ рдХрд┐ рд╕реЗрд╡рд╛ рдХреНрдпрд╛ рд░рд┐рдЯрд░реНрди рджреЗрддреА рд╣реИред

рдЖрдХреГрддрд┐ рдореЗрдВ, рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдирд┐рдХрд▓реА рдереА: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реЗрд╡рд╛ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд xml рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВред рд╡реЗ рдереЛрдбрд╝рд╛ рднреА рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ join'y рдФрд░ рдЕрдиреНрдп рдореБрд░рд╛ (рдЕрдм рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ) рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реВрдВред

рдЕрдм рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ:
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдорд╛рдЙрд╕ рдФрд░ рд░реЗрдбреА-рдореЗрдб рдЪреЗрдХ рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ - рдЖрдкрдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдЧреНрд░реВрд╡реА рдкрд░ рд╕реЛрдкреБрдИ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬрд╛рд╡рд╛ рдХреЛрдб рд╕рд╣реА рдЧреНрд░реВрд╡реА рдХреЛрдб рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдХреБрдЫ рднреА рд╕реАрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЧреНрд░реВрд╡реА рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛)ред
рдЖрдЗрдП рд╕рдорд╕реНрдпрд╛ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ: рдореБрдЭреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ 2 рддрд░реАрдХреЗ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ: рдЖрдк JDBC рдЕрдиреБрд░реЛрдз рдЪрд░рдг рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрднрд┐рдХрдерди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдЪрд░рдг рдореЗрдВ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВрдиреЗ рдзреАрд░рдЬ рдмрдВрдзрд╛рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдб, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЛ рдЗрд╕реЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рд╡рд╣ рдЙрди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛, рдЬреЛ рдЖрдЧреЗ рдХреЗ рд╢рдмреНрдж рдмрд╣реБрдд рд╣реА рд╢рд╛рдирджрд╛рд░ рд╣реИрдВ ...

import com.eviware.soapui.support.XmlHolder;

boolean b = true;
def soapRequest = testRunner.testCase.getTestStepAt(0);
// - item'
XmlHolder response = new XmlHolder( soapRequest.getProperty('Response').getValue() );
int numberOfItems = response.getXmlObject().selectPath('//item').size();

if (numberOfItems != 0)
{
XmlHolder row, item;
for (int i=1; i<=numberOfItems; i++) {
row = new XmlHolder( context.expand ( '${JDBC Request#ResponseAsXml#//Row['+i+']}' ));
item = new XmlHolder( context.expand ( '${GetFeedbackList#Response#//item['+i+']}' ));
//compareItemWithRow - ,
if (!compareItemWithRow (item, row) ) {
b = false;
//
break;
}
}
}
else {
//
def jdbcRequest = testRunner.testCase.getTestStepAt(1);
response = new XmlHolder( jdbcRequest.getProperty('ResponseAsXml').getValue() )
if (response.getXmlObject().selectPath('//item').size() != 0) {
log.error "There was no items in response but I found a few in database! WTF?!"
assert false;
}
}
assert b;
return;

/** 2 XmlHolder' , - - false*/
private boolean compareItemWithRow (XmlHolder item, XmlHolder row) {
boolean b = true;

if (!item.getNodeValue('//FeedbackId').equals( row.getNodeValue('//FEEDBACKID') )) {
log.error ('''FeedbackId doesn't corresponds database! Here could be your advertisment...'''
+ item.getNodeValue('//FeedbackId') + ' != ' + row.getNodeValue('//FEEDBACKID') +
'!!!ITEM: '+ item.getXml()+
' !!!ROW: '+ row.getXml());
b=false;
}
if (!item.getNodeValue('//RequestDate').equals( row.getNodeValue('//DATEINXML') )) {
log.error ('''RequestDate doesn't corresponds database! Here could be your advertisment... "'''
+ item.getNodeValue('//RequestDate') + '" != "' + row.getNodeValue('//DATEINXML') +
'" !!!ITEM: '+ item.getXml()+
' !!!ROW: '+ row.getXml());
b=false;
}
if (!item.getNodeValue('//AuthorUserId').equals( row.getNodeValue('//REQUESTUSERID') )) {
log.error ('''AuthorUserId doesn't corresponds database! Here could be your advertisment... "'''
+ item.getNodeValue('//AuthorUserId') + '" != "' + row.getNodeValue('//REQUESTUSERID') +
'" !!!ITEM: '+ item.getXml()+
' !!!ROW: '+ row.getXml());
b=false;
}
//...
return b;
}

Source: https://habr.com/ru/post/In142429/


All Articles