如果字符串值不相同,我试图使测试用例失败。我创建了一个类和一个比较字符串值的方法。
public class test1 {
public String onetwo(str1,str2)
{
def first = str1
def second=str2
if (first==second)
{
return "Strings are same"
}
else
{
testrunner.fail("String Values are not same")
}
}
public String fail(reason)
{
return "implementation of method1"+reason
}
}
def objone =new test1()
def result = objone.onetwo('Soapui','Soapui')
def result1 = objone.onetwo('Soapui','SoapuiPro')
执行它时,我收到上面代码最后一行的消息 错误:groovy.lang.MissingPropertyException:没有这样的属性:类的testrunner:test1
如果字符串不相同,请建议如何使用testrunner.fail或任何其他方法使测试用例失败。
谢谢
答案 0 :(得分:0)
找不到SoapUI的testrunner,因为你在自己的班级里访问它。 (请注意,错误消息正在尝试查找test1.testrunner,当然不存在。)如果从脚本的顶级(您定义变量的位置)访问testrunner,它应该可以工作。
如果你仍然想要一个可重用的类/方法,一个简单的解决方法是让它返回一个布尔值或错误消息,然后如果你的方法返回false / error就调用testrunner.fail。像这样的东西(虽然布尔返回可能会使代码更清晰):
public class test1 {
public String onetwo(str1,str2)
{
def first = str1
def second=str2
if (first==second)
{
return "Strings are same"
}
else
{
return "String Values are not same"
}
}
...
}
def objone =new test1()
def result = objone.onetwo('Soapui','Soapui')
def result1 = objone.onetwo('Soapui','SoapuiPro')
if (result != "Strings are same")
{
testrunner.fail(result)
}
...
另一个站点的This thread也描述了为SoapUI制作可重用的Groovy库的更复杂的解决方案。
答案 1 :(得分:0)
如果要在groovy script
测试步骤中比较两个字符串,则不需要编写类,而是可以使用以下语句来实现。
匹配样本 - 请注意,成功断言没有任何结果
字符串比较,如果不相等则失败
assert 'Soapui' == 'Soapui', "Actual and expected does not match"
另一个例子 - 用boolen
def result = true;assert result, "Result is false"
非匹配示例 - 失败时测试失败
字符串不匹配,并显示错误消息
assert 'Soapui' == 'SoapuiPro', "Actual and expected does not match"
非零测试的另一个例子
def number=0;assert number, "Number is zero"
如果您只需要该类的示例并且喜欢访问testRunner
对象,那么我们需要将其传递给class
或需要testRunner的method
。否则,其他类不知道groovy脚本可用的对象。
以下是有关各级测试用例层次结构中对象可用性的更多信息。
启动soapUI时,它会初始化某些变量,并可在项目,套件,测试用例,安装脚本,拆解脚本等处获得。如果打开脚本编辑器,您将看到可用的对象那里。
例如,groovy script
测试步骤有log, context, testRunner, testCase
个对象。但是,如果某人在Groovy Script测试步骤中创建了一个类,那么这些对象在该用户定义的类中不可用。