2013-06-08 22 views
5

Tôi đã sử dụng mã dưới đây để chạy từ soapUI, nhưng tôi vẫn có được một ngoại lệ sở hữu thiếu:Làm thế nào để truy cập Twitter API bằng cách sử dụng SoapUI?

Không có tài sản như vậy tồn tại cho yêu cầu lớp

Làm thế nào để giải quyết vấn đề này?

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) 
+0

Đây có phải là Python không? không mã làm việc mà không có khuôn khổ kiểm tra SoapUI? – mb21

+0

đây là mảnh mã hấp dẫn mà iam sử dụng trong xà phòng ui – ChanGan

Trả lời

1

EDIT: đã xem xét hướng dẫn API, và nó xuất hiện rằng bạn có những điều sau đây:

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

Sau đó, bạn gọi project.getPropertyValue. Theo số API guide, không có phương pháp như vậy được gọi là getPropertyValue cho com.eviware.soapui.model.support.ModelSupport.

Có một giao diện được gọi là com.eviware.soapui.model.project. Trừ khi bạn đang kế thừa từ interface com.eviware.soapui.model.TestPropertyHolder, bạn sẽ không nhận được getPropertyValue.


Để giúp giải quyết vấn đề của bạn, bạn cần phải gỡ lỗi vào mã của mình. Tùy thuộc vào kết quả từ 'yêu cầu' trên dòng đầu tiên của bạn, bạn có thể rất tốt không có thuộc tính oauth_consumer_key, oauth_consumer_secret, oauth_access_token hoặc oauth_access_token_secret. Xuất nội dung của request (hoặc chỉ thiết lập điểm ngắt trong SoapUI tại def project và làm việc thông qua xác thực nếu bạn có thuộc tính).

Nếu không, có một số cách khác để giải quyết vấn đề của bạn. Đây là những giải pháp hướng tới việc sử dụng OAuth với SoapUI.

Thử following:

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.'); 

Lợi ích của mã này là "token gậy xung quanh trong các thuộc tính TestSuite vĩnh viễn này có tác dụng phụ/lợi ích của việc cho phép tôi để chạy thử nghiệm sau. kiểm tra xác thực ".

Nếu cách này không hiệu quả, có great article here giải thích cách thực hiện OAuth với Vimeo; điều này rất giống với Twitter OAuth.

Cả hai giải pháp này đều không yêu cầu SoapUI Pro.

+0

Có cần xà phòng ui pro ??? tôi chỉ có xà phòng ui .. điều này sẽ không hoạt động trong ui xà phòng? – ChanGan

+0

Nó không cần SoapUI pro. Điều này sẽ làm việc với SoapUI miễn phí – kgdesouz

+0

Theo ** [this] (http: //xebee.xebia.trong/2011/03/31/test-oauth-protected-rest-services-using-soapui /) ** bài đăng trên blog (được tìm thấy trong câu trả lời), họ đang sử dụng * free * '[Hỗ trợ tập lệnh Groovy] (http: //www.soapui.org/About-SoapUI/compare-soapui-and-soapui-pro.html) 'tìm thấy trong phiên bản * miễn phí * của SoapUI. Đây chính xác là câu trả lời bạn đang tìm kiếm, bao gồm tất cả mã cần thiết để chạy nó. – kgdesouz

1

Mã bạn đã đưa vào đây đi vào tab sự kiện trong trình chỉnh sửa DỰ ÁN và bạn sử dụng sự kiện RequestFilter.filterRequest để thực thi. Bạn cũng phải tạo các thuộc tính tùy chỉnh cho consumer_key, consumer_secret, oauth_acces_token và oauth_acccess_token_secret.
Đây là hướng dẫn về cách thực hiện điều này trên trang web smartbear http://www.soapui.org/REST-Testing/twitter-sample-project.html

Các vấn đề liên quan