Ben REST ve test dept için yeni tür bir tür. REST hizmetlerimizi test etmek için otomasyon scriptleri yazmam gerekiyordu. Bu scriptleri bir Jenkins CI işinden düzenli olarak çalıştırmayı planlıyoruz. Ben selenyum IDE tarafından üretilen python'larda kullanıcı arayüzü işlevselliği test komut dosyalarına sahip olduğumdan pythonda yazmayı tercih ederim, ancak iyi bir çözüme açığım. Httplib, simplejson ve Xunit'i kontrol ettim, ancak orada daha iyi çözümler arıyordum. Ayrıca, bir şablon yazmayı ve her REST API'sı için xml veya bir şeyden gelen api bilgilerini okuyarak gerçek betik oluşturmayı tercih ederim. Tüm tavsiyelere teşekkürler.REST hizmetlerini otomatikleştirmek için gerekli tavsiyeler sınama
cevap
Kısıtlı API'larımı sınamak için genellikle Cucumber kullanıyorum. Aşağıdaki örnek Ruby'dir, ancak the rubypy gem veya lettuce kullanarak python'a kolayca çevrilebilir. RESTful baz adımları bir set ile
Başlangıç:
When /^I send a GET request for "([^\"]*)"$/ do |path|
get path
end
When /^I send a POST request to "([^\"]*)" with the following:$/ do |path, body|
post path, body
end
When /^I send a PUT request to "([^\"]*)" with the following:$/ do |path, body|
put path, body
end
When /^I send a DELETE request to "([^\"]*)"$/ do |path|
delete path
end
Then /^the response should be "([^\"]*)"$/ do |status|
last_response.status.should == status.to_i
end
Then /^the response JSON should be:$/ do |body|
JSON.parse(last_response.body).should == JSON.parse(body)
end
Ve şimdi biz aslında istekleri göndererek API sınamak özelliklerini yazabilir.
Feature: The users endpoints
Scenario: Creating a user
When I send a POST request to "/users" with the following:
"""
{ "name": "Swift", "status": "awesome" }
"""
Then the response should be "200"
Scenario: Listing users
Given I send a POST request to "/users" with the following:
"""
{ "name": "Swift", "status": "awesome" }
"""
When I send a GET request for "/users"
Then the response should be "200"
And the response JSON should be:
"""
[{ "name": "Swift", "status": "awesome" }]
"""
... etc ...
Seçtiğiniz CI sisteminde kolayca çalıştırılabilir. referanslar için bu bağlantıları bakınız:
Teşekkürler Swift. Örneğini takip edeceğim. – user1366786
Sorun değil, yardımcı olabileceğime sevindim – Swift
import openpyxl
import requests
import json
from requests.auth import HTTPBasicAuth
urlHead='https://IP_ADDRESS_HOST:PORT_NUMBER/'
rowStartAt=2
apiColumn=2
#payloadColumn=3
responseBodyColumn=12
statusCodeColumn=13
headerTypes = {'Content-Type':'application/json',
'Accept':'application/json',
'Authorization': '23324'
}
wb = openpyxl.load_workbook('Excel_WORKBOOK.xlsx')
# PROCESS EACH SHEET
for sheetName in (wb.get_sheet_names()):
print ('Sheet Name = ' + sheetName)
flagVar = input('Enter N To avoid APIs Sheets')
if (flagVar=='N'):
print ('Sheet got skipped')
continue
#get a sheet
sheetObj = wb.get_sheet_by_name(sheetName)
#for each sheet iterate the API's
for i in range(2, sheetObj.max_row+1):
#below is API with method type
apiFromSheet = (sheetObj.cell(row=i, column=apiColumn).value)
if apiFromSheet is None:
continue
#print (i, apiFromSheet)
#Let's split the api
apiType = apiFromSheet.split()[0]
method = apiFromSheet.split()[1]
if (apiType!='GET'):
continue
#lets process GET API's
absPath = urlHead + method
print ("REQUESTED TYPE AND PATH = ", apiType, absPath)
print('\n')
res = requests.get(absPath, auth=HTTPBasicAuth(user, pwd), verify=False, headers=headerTypes)
#LET's write res body into relevant cell
sheetObj.cell(row=i, column=responseBodyColumn).value = (res.text)
sheetObj.cell(row=i, column=statusCodeColumn).value = (res.status_code)
wb.save('Excel_WORKBOOK.xlsx')
`#exit(0)`
- 1. REST API'sı sık karşılaşılan sorunları sınama
- 2. REST hizmetlerini sınamak için hangi Scala çerçevesi kullanılıyor?
- 3. Etkileşimi otomatikleştirmek için python'u kullanın?
- 4. Takibi Facebook "Beğen" Tavsiyeler
- 5. Tavsiyeler sistem içinEmplicit'i kullanma
- 6. Specflow - Nasıl Yapılır? Tüm sınama başarısız olmamasını sınamak için Beklemede sınama
- 7. Azure Mobile Hizmetlerini UWP'ye Bağlama
- 8. Android: Eve ekran widget'ları için test otomatikleştirmek için arıyorum
- 9. Angular2 hizmetlerini direktifler olarak kullanma (ngIf için)
- 10. Swift birimi sınama ve "sınama için oluştur" hataları
- 11. Kimlik Ben Bahar çizme Zuul ve eureka hizmetlerini kullanarak benim mikro hizmetlerini yapılandırmış
- 12. hg, Windows hizmetlerini kullanmaktadır
- 13. Alt Dizge için Dize Sınama?
- 14. Testng sınama paketi sınama sınıfı yürütme sırasını sınama
- 15. Haskell Tür Bağlamı, işlevler için gerekli bildirimler için gerekli
- 16. Hyperion Paylaşılan Hizmetlerini Yapılandırma
- 17. SFSafariViewController'ı UI testlerinde otomatikleştirmek için herhangi bir yol var mı?
- 18. Birim sınama - SqlDataReader'ın izlenmesi
- 19. Paylaşım noktası web hizmetlerini kullanarak 'Gerekli Ödeme' programatik olarak devre dışı bırakın
- 20. Web Hizmetlerini (SOA/REST) uygulayabildiğinizde RAD ile EJB'yi uygulamak hala yararlı mı?
- 21. Django-rest-auth içinde gerekli e-posta için en iyi yöntem
- 22. Ses Kuyruk Hizmetlerini kullanma örneği
- 23. Ekip hizmetlerinden Windows hizmetlerini dağıtın
- 24. EF. dize alanları için gerekli doğrulama hatası [Gerekli] olmadan yükseltmek
- 25. ReentrantLock aracılığıyla erişilen alanlar için gerekli anahtar kelime gerekli mi?
- 26. Ülke kodu için xpath gerekli
- 27. WebInvoke akışını kapatmak için gerekli
- 28. Bir HandlerThread çıkmak için gerekli?
- 29. Delphi REST API Örnek Örneği
- 30. BsonDocument nesnesini sınama için geri dönme
tam olarak test etmek çalışıyorsun? Bu cevap beklediğiniz şey mi? – Swift
Evet, yanıt verilerinin doğrulanması gerekiyor. Tüm CRUD dinlenme api eylemlerini test etmeyi düşünmek. Örneğin, REST API'lerini kullanarak, beş çalışan yaratın, çalışanları geri okuyun, bazılarını güncelleyin ve son olarak tümünü silin ... Bu eylem dizisinde düşünüyorum. – user1366786
Via Groovy link aşağıdadır. http://stackoverflow.com/questions/38972221/api-automation-groovy-soapui-all-together-for-most/38974183#38974183 –