资源描述
在soapUI中使用Groovy生成和验证数据
soapUI 是一款领先的Web Service测试工具,它支持脚本,来做一些更灵活的测试工作。比如生成测试数据并在之后做验证。
我们假设一个场景,我们接受一个Web Services,它含有id和name信息。我们会把这些信息存到数据库的'a_table'表里。
[code=sql]
CREATE TABLE A_TABLE
(
ID NUMBER(8, 0) NOT NULL,
NAME VARCHAR2(20),
CONSTRAINT TABLE1_PK PRIMARY KEY (ID)
);
[/code]
1. 添加如下脚本到TestCase的'Setup Script'中
[code=java]
import groovy.sql.Sql
def username = context.expand( '${jdbc.username}' )
def password = context.expand( '${jdbc.password}' )
def url = context.expand( '${jdbc.url}' )
def driver = context.expand( '${jdbc.driver}' )
def sql = Sql.newInstance(url, username, password, driver)
def maxId = sql.firstRow("select max(id) value from a_table")
if (null == maxId.value) maxId = 0;
else maxId = maxId.value
log.info "max manufacturer id is: ${maxId}"
def prop = testRunner.testCase.getTestStepByName( "Properties" )
prop.setPropertyValue( "id", String.valueOf( maxId + 1) );
prop.setPropertyValue( "name",
"TestName" + String.valueOf( maxId + 1) );
[/code]
2. 添加Properties
[code]
id
name
[/code]
3. Modify Test Request
[code=xml]
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<testRequest>
<id>${Properties#id}</id>
<name>${Properties#name}</name>
</testRequest>
</soapenv:Body>
</soapenv:Envelope>
[/code]
4. 添加Script Assertion用于验证
[code=java]
import groovy.sql.Sql
def username = context.expand( '${jdbc.username}' )
def password = context.expand( '${jdbc.password}' )
def url = context.expand( '${jdbc.url}' )
def driver = context.expand( '${jdbc.driver}' )
def sql = Sql.newInstance(url, username, password, driver)
def prop = testRunner.testCase.getTestStepByName( "Properties" )
def id = prop.getPropertyValue( "manID" ).toInteger()
def name = prop.getPropertyValue( "manName" )
def row = sql.firstRow(
"select id id, name name from a_table where id = ${id}")
assert null != row
assert id == row.id
assert name.equals(row.name)
[/code]
在soapUI中使用动态Endpoint
1. 创建一个soapui.properties文件把它放在你的soapUI主目录的bin目录下
soapui.properties 例子:
[code]
# endpoint list
serviceA.endpoint = http://localhost:7001/axis/services/serviceASOAP
serviceB.endpoint = http://localhost:7001/axis/services/serviceBSOAP
[/code]
2. 打开你的TestCase,设置endpoint为你的endpoint属性名,例如 ${##serviceA.endpoint}
3. 运行你的TestCase,你会发现endpoint被成功替换了
展开阅读全文