Ich bin ein bisschen Neuling zu REST und Testabteilung. Ich musste Automatisierungsskripts schreiben, um unsere REST-Dienste zu testen. Wir planen, diese Skripte regelmäßig von einem Jenkins-CI-Job aus auszuführen. Ich bevorzuge es, diese in Python zu schreiben, da wir bereits Scripts für die UI-Funktionalität in Python haben, die von Selen IDE generiert werden, aber ich bin offen für jede gute Lösung. Ich habe httplib, simplejson und Xunit überprüft, aber nach besseren Lösungen gesucht. Und auch, würde ich lieber eine Vorlage schreiben und generieren tatsächlichen Skript für jede REST-API durch Lesen von API-Informationen aus XML oder etwas. Vorankommen dank allen Ratschlägen.Benötigte Rat zur Automatisierung von REST-Diensten Test
Antwort
Normalerweise verwende ich Cucumber, um meine erholsamen APIs zu testen. Das folgende Beispiel ist in Ruby, könnte aber leicht in Python übersetzt werden, entweder the rubypy gem oder lettuce.
Beginnen Sie mit einem Satz von RESTful Grundschritte:
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
Und jetzt können wir Funktionen schreiben, die die API testen, indem tatsächlich die Anforderungen ausgibt.
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 ...
Diese sind einfach auf einem CI-System Ihrer Wahl zu betreiben. Sehen Sie diese Links für Referenzen:
Danke Swift. Ich werde deinem Beispiel folgen. – user1366786
Kein Problem, froh, dass ich helfen konnte – 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. Brauchen Sie Rat zur Wortbenennung von Methoden
- 2. Muster für UI-Test Automatisierung
- 3. UFT Automatisierung Test auf C#
- 4. Code zur Automatisierung der inkrementierten ZIP-Komprimierung?
- 5. Bester Weg zur Automatisierung des täglichen Builds
- 6. Wie angeben, welche TestNG Test zur Laufzeit
- 7. Ruby-Skript zur Automatisierung von Browser-Aktionen/Verbindung mit WiFi
- 8. Automatisierung von Javascript Gebäude
- 9. Errichten-Automatisierung - sbt: Compile/Test gegen mehrere Abhängigkeiten
- 10. Automatisierung Test-Tool für Ipad und Safari mit Java
- 11. Xcode Ui-Automatisierung - Test läuft nicht auf physikalischem Gerät
- 12. Einfache Boost-Einreichungen; Rat?
- 13. Starten Selen-Test von Lesezeichen?
- 14. Angular 2 benötigte Bibliotheken
- 15. Wie kann VBA zur Automatisierung mehrerer Office-Anwendungen verwendet werden?
- 16. mysql Abfrage benötigte
- 17. Wie kann NLog/Log4Net zur Automatisierung der Datenbankänderung verwendet werden?
- 18. Gibt es eine empfohlene Methode zur Automatisierung der Modulanschlussverbindung?
- 19. Benötigte Studienvorschläge - Manipulation von SMBIOS unter Linux
- 20. Benötigte Java-Version von Maven Dependency?
- 21. Automatisierung von Testsuite-Generation in Eclipse
- 22. Benötigte Symbolgrößen für tvOS
- 23. Benötigte Server für Ember.js
- 24. Auf UIGestureRecognizers, benötigte Klarstellung
- 25. ETL - Abfrage benötigte
- 26. previousLocationInView, benötigte Klärung
- 27. Benötigte Zeit für einen Prozess
- 28. Brauchen Sie Rat zur Anzeige (und/oder Konvertierung) von PDF-Dateien im Internet
- 29. PowerShell-Skript zur Automatisierung der Dateneingabe in OpenOffice Calc Spreadsheet
- 30. Jenkins Setup für Selenium Grid zur Automatisierung auf iOS-Geräten
Was genau wollen Sie testen? Dass die Antwort das ist, was Sie erwarten würden? – Swift
Ja, Antwortdaten müssen überprüft werden. Denken Sie daran, alle CRUD-Rest-API-Aktionen zu testen. Zum Beispiel mithilfe von REST-APIs, Erstellen Sie fünf Mitarbeiter, lesen Sie Mitarbeiter zurück, aktualisieren Sie einige und schließlich alle löschen ... Ich denke in dieser Linie von Aktionen. – user1366786
Via Groovy unten ist der Link. http://stackoverflow.com/questions/38972221/api-automation-groovy-soapui-all-together-for-most/38974183#38974183 –