如何使用SoapUI访问Twitter API?

5
我已经使用以下代码在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 ) 

这是Python吗?代码在没有SoapUI测试框架的情况下能否正常工作? - mb21
这是我在 SoapUI 中使用的 Groovy 代码片段。 - ChanGan
2个回答

1

编辑: 查看了API指南,发现您有以下内容:

def project = com.eviware.soapui.model.support.ModelSupport.getModelItemProject( request ) 

然后您调用project.getPropertyValue。根据API指南,对于com.eviware.soapui.model.support.ModelSupport,没有名为getPropertyValue的方法。
有一个名为com.eviware.soapui.model.project的接口。除非您继承自interface com.eviware.soapui.model.TestPropertyHolder,否则您将无法获得getPropertyValue
为了解决您的问题,您需要对代码进行调试。根据第一行的'request'的结果,您可能没有属性'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.' );

这段代码的好处在于“令牌将永久保存在TestSuite属性中。这带来的副作用/好处是我可以在身份验证测试之后运行测试”。如果这不起作用,有一篇很棒的文章解释如何对抗Vimeo进行OAuth; 这应该与Twitter OAuth非常相似。这两种解决方案都不需要SoapUI Pro。

它不需要SoapUI Pro。这应该可以使用免费的SoapUI工作。 - kgdesouz
根据这篇博客文章(在答案中找到),他们正在使用SoapUI的免费“Groovy脚本支持”,该支持在免费版本中找到。这正是您要寻找的答案,包括运行所需的所有代码。 - kgdesouz

1
你需要在项目编辑器的事件标签中包含此处提供的代码,并使用RequestFilter.filterRequest事件执行。还需要为consumer_key、consumer_secret、oauth_acces_token和oauth_acccess_token_secret创建自定义属性。
这是如何在smartbear网站上实现的指南 http://www.soapui.org/REST-Testing/twitter-sample-project.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接