我使用下面的代码从SoapUI运行,但我仍然得到一个缺少的属性异常:
类请求不存在此类属性
我该如何解决这个问题?
def project = com.eviware.soapui.model.support.ModelSupport.getModelItemProject( request )
// initialize OAuth consumer
def consumer = new oauth.signpost.commonshttp.CommonsHttpOAuthConsumer( project.getPropertyValue( "oauth_consumer_key" ), project.getPropertyValue( "oauth_consumer_secret" ));
consumer.setTokenWithSecret( project.getPropertyValue( "oauth_access_token" ), project.getPropertyValue( "oauth_access_token_secret" ));
// sign the request
consumer.sign( context.httpMethod )
Run Code Online (Sandbox Code Playgroud)
编辑:查看了 API 指南,看起来您有以下内容:
def project = com.eviware.soapui.model.support.ModelSupport.getModelItemProject( request )
Run Code Online (Sandbox Code Playgroud)
然后你打电话project.getPropertyValue
。根据API指南,没有调用这样的getPropertyValue
方法com.eviware.soapui.model.support.ModelSupport
。
有一个名为com.eviware.soapui.model.project的接口。除非您从接口 com.eviware.soapui.model.TestPropertyHolder继承,否则您不会获得getPropertyValue
.
为了帮助解决您的问题,您需要调试代码。根据第一行“请求”的结果,您很可能没有属性oauth_consumer_key
, oauth_consumer_secret
,oauth_access_token
或oauth_access_token_secret
。输出内容request
(或者只是在 SoapUI 中设置一个断点,def project
然后验证是否具有该属性)。
否则,有几种替代方法可以解决您的问题。这些解决方案旨在将 OAuth 与 SoapUI 结合使用。
尝试以下操作:
def gu = new com.eviware.soapui.support.GroovyUtils( context );
def xml = gu.getXmlHolder( 'Authenticate - Default#Response' );
def token = xml.getNodeValue( '/auth/token' );
log.info( 'Got token: ' + token );
def suite = context.testCase.testSuite;
suite.setPropertyValue( 'auth_token', token );
log.info( 'Saved auth_token to suite.' );
Run Code Online (Sandbox Code Playgroud)
这段代码的好处是“令牌永久保留在 TestSuite 属性中。这具有允许我在身份验证测试后运行测试的副作用/好处”。
如果这不起作用,这里有一篇很棒的文章解释了如何针对 Vimeo 进行 OAuth;这应该与 Twitter OAuth 非常相似。
这些解决方案都不需要 SoapUI Pro。
归档时间: |
|
查看次数: |
2105 次 |
最近记录: |