我可以先说我是编程和SoapUI的新手(更像是一周大了)。我提前道歉,询问我即将问的问题。
import groovyx.net.http.HTTPBuilder
import groovyx.net.http.ContentType
import groovyx.net.http.Method
class XmlGenerator {
// I created a class i.e. called XmlGenerator with a
// static method called GetXML() which looks like this:
public static def GetXML()
{
def writer = new StringWriter()
def xml = new MarkupBuilder(writer)
xml.GetDMessage() //creating the xml message
{
PrescribedItems
{
PrescribedMethod(xml,'Some Value','Some Value','Some Value')
PrescribedItem
{
PrescribedMethod(xml,'Some Value','Some Value','Some Value')
}
}
}
return writer
}
// This method creates the XML needed but then i need to
// pass the xml generated to a request boy; so i
//create another method within the same class:
static def postXML(String baseUrl, String path)
{
def RequestBody = XmlGenerator.GetXML() // i am not sure if this will work
try
{
def ret = null
def http = new HTTPBuilder(baseUrl)
http.request(Method.POST, ContentType.XML)
{
uri.path = path
body = RequestBody
}
}
catch (groovyx.net.http.HttpResponseException ex)
{
ex.printStackTrace()
return null
}
catch (java.net.ConnectException ex)
{
ex.printStackTrace()
return null
}
}
}
一个名为XmlGenerator()
的类,有两种方法; GetXML()
(用于生成XML)和postXML()
(用于将GetXML()
生成的XML发送到Web服务。)
如何确保其他请求消息使用这两种方法(GetXML()
和postXML()
),即我是否需要导入groovy scripte.g。我是否导入... GroovyScriptName,如果是,请问如何?
如何创建创建xml并在后续请求消息中运行请求。例如;
我这样做; XmlGenerator() gen = new XmlGenerator()
,然后执行gen.GetXML()
和gen.postXML()
来创建并运行请求。此外,testRunner在所有这些
即使我已经在脚本中导入了代码,但运行代码仍然会引发HTTPBuilder, ContentType , Method can not be resolved
最后,财产在构建此框架方面可以发挥什么作用?请记住,每个请求将独立于其他请求,即在测试执行期间没有任何内容从一个请求传递到另一个请求
答案 0 :(得分:3)
您可以使用标准soapui功能指定要测试的REST请求,如下所示:
http://www.soapui.org/REST-Testing/getting-started.html
按照上一页中的步骤创建:
然后,您可以向调用该请求的测试用例添加REST测试步骤。
然后,您可以在REST测试步骤之前插入Groovy测试步骤来构建xml主体;这是一个构建XML字符串的简单示例:
import groovy.xml.MarkupBuilder
context.writer = new StringWriter()
def xml = new MarkupBuilder(context.writer)
xml.books() {
book(name:'blue ocean') {
format ('paperback')
year ('2010')
}
book(name:'quicksilver') {
format ('hardback')
year ('2011')
}
}
请注意,XML已分配给上下文变量(context.writer)。这使得它可以在测试用例的范围内的后续步骤中用于测试运行期间。
然后,将以下代码插入REST测试步骤的主体:
${=context.writer}
最后,您可以选择在REST测试步骤中添加断言;这里有一些信息:
http://www.soapui.org/Functional-Testing/getting-started-with-assertions.html