Regeln für Teilnehmer:
Ich bin mit den Regeln einverstanden

Übersicht:

Favoritenliste:

Favourite Pages

There are currently no pages on your favourites list. You can add pages to this list by selecting Favourite from the Tools menu on the page you're viewing.
Child pages
  • Testsuite-API nutzen

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagepy
linenumberstrue
collapsetrue
# -*- coding: UTF-8 -*-

# Importiere die Bibliothek suds-jurko, um mit der Testsuite via SOAP kommunizieren zu können:
from suds.client import Client as SudsClient
# Importiere die Bibliothek time, um in der Schleife sleepen/warten zu können:
import time

### Start: Erzeuge die Test-Konfiguration...

# Definiere die zu testende URL:
url = u'http://www.sh-mis.schleswig-holstein.de/soapServices/CSWStartup?REQUEST=GetRecordById&ID=550df9ba-6b15-435c-8cc6-c288f7f2d2ac&SERVICE=CSW&VERSION=2.0.2&ElementSetName=full&outputSchema=http://www.isotc211.org/2005/gmd'

# Definiere die Zugangsdaten, die bei jedem SOAP-Aufruf mitgegeben werden:
credentials = {'userName': 'IHR_BENUTZERNAME', 'pass': u'IHR_PASSWORT'}

# Definiere den Proxy, um die Internet-Verbindung aufbauen zu können:
proxies = {'http': 'http://<HOST>:<PORT>/', 'https': 'http://<HOST>:<PORT>/'}
# Falls kein Proxy verwendet wird, einfach die vorherige Zeile kommentieren bzw. ersetzen mit:
# proxies = {}

# Lade die WSDL-Datei, um mit der Test-Testsuite kommunizieren zu können:
client = SudsClient('httpshttp://testsuite-dev.testbed.gdi-de.ifhg.deorg/gdi/download?id=wsdl', proxy=proxies)

# Definiere ein Wörterbuch, um die Test-Konfiguration erstellen zu können...
parameter_set_test_configuration = {'name': u'loeschen',
                                    'description': u'loeschen',
                                    'notify': 'NO',
                                    # 'fileArray': datei_inhalt.encode('base64'),
                                    # 'fileName': u'loeschen.xml'),
 # wird benötigt                                     'url': url,
                                    'saveReport': 'NO',
                                    'tk_ID': 1749,  # siehe https://tsanami.testbed.gdi-de.org/testsuite_testklassen_ids.php
                                    'confClassID': '',
 # ?                                     'sourceType': 'URL'}

# Führe Wörterbuch und Zugangsdaten zusammen, um den SOAP-Aufruf ausführen zu können:
parameter_set_test_configuration.update(credentials)

# Erzeuge Test-Konfiguration, um den Test später starten zu können:
test_config_id = client.service.setTestConfiguration(**parameter_set_test_configuration)

# Gebe ID der Test-Konfiguration aus, um besser informiert zu sein:
print u'test_config_id: {0}'.format(test_config_id)

### Ende: ...erzeuge die Test-Konfiguration

### Start: Starte die Test-Konfiguration...

# Speichere Test-Konfigurations-ID in einem Wörterbuch, um es vereinigen zu können mit den Zugangsdaten:
parameter_start_test_configuration = {'testConfID': test_config_id}

# Führe Wörterbuch und Zugangsdaten zusammen, um die Test-Konfiguration starten zu können:
parameter_start_test_configuration.update(credentials)

# Führe den Test aus:
report_id = client.service.startTestConfiguration(**parameter_start_test_configuration)

# Gebe ID des Berichtes aus, um besser informiert zu sein:
print u'report_id: {0}'.format(report_id)

### Ende: ...starte die Test-Konfiguration

### Start: Warte auf das Test-Ende...

# Speichere Test-Konfigurations-Id in einem Wörterbuch, um es vereinigen zu können mit den Zugangsdaten:
parameter_get_test_status = {'testConfId': test_config_id}

# Führe Wörterbuch und Zugangsdaten zusammen, um auf das Test-Ende warten zu können:
parameter_get_test_status.update(credentials)

# Starte Schleife:
laeuft = True

# Iteriere über Status bis der Test fertig durchgelaufen ist:
while laeuft:
    
    # Hole Status via SOAP:
    status = client.service.getTestStatus(**parameter_get_test_status)
    
    # Gebe Test-Status aus, um besser informiert zu sein:
    print u'status: {0}'.format(status)
    
    # Wenn der Test nicht mehr läuft: beende Schleife...
    if status != 'Running':
        laeuft = False
        
    # Ansonsten: warte eine halbe Sekunde und gehe in die nächste Iteration...
    else:
        time.sleep(0.5)

### Ende: ...warte auf das Test-Ende

### Start: Hole die Test-Ergebnisse ab...

# Speichere die Berichts-ID in einem Wörterbuch, um es vereinigen zu können mit den Zugangsdaten:
parameter_get_test_report = {'reportID': report_id}

# Führe Wörterbuch und Zugangsdaten zusammen, um den Bericht abrufen zu können:
parameter_get_test_report.update(credentials)

# Hole Bericht via SOAP ab:
test_report = client.service.getTestReport(**parameter_get_test_report)

### Ende: ...hole die Test-Ergebnisse ab

### Start: Komme zu einem Gesamt-Ergebnis...

# Start: Definiere ein zunächst leeres Ergebnis...
fehler = False
warnung = False
ok = False
# Ende: ...definiere ein zunächst leeres Ergebnis

# Iteriere über die Konformitätsklassen-Elemente...
for k, item in enumerate(test_report.item):
    
    # Iteriere über die einzelnen Tests...
    for l, singleTest in enumerate(item.singleTests):
        
        # Merke Fehler...
        if singleTest.result == 'FAIL':
            fehler = True
        
        # Merke Warnungen...
        elif singleTest.result == 'WARNING':
            warnung = True
        
        # Merke OKs...
        elif singleTest.result == 'PASS':
            ok = True

# Start: Werte Ergebnisse aus...
if fehler is True:
    ergebnis = 'Fehler'
elif warnung is True:
    ergebnis = 'Warnung'
elif ok is True:
    ergebnis = 'OK'
# Ende: ...werte Ergebnisse aus

# Gebe das Ergebnis des Tests aus, um besser informiert zu sein:
print u'ergebnis: {0}'.format(ergebnis)

### Ende: ...komme zu einem Gesamt-Ergebnis

### Start: Lösche den Test...

# Speichere Test-Konfigurations-ID in einem Wörterbuch, um es vereinigen zu können mit den Zugangsdaten:
parameter_delete_test_configuration = {'testConfID': test_config_id}

# Führe Wörterbuch und Zugangsdaten zusammen, um die Test-Konfiguration löschen zu können:
parameter_delete_test_configuration.update(credentials)

# Lösche die Test-Konfiguration mit samt Report:
client.service.deleteTestConfiguration(**parameter_delete_test_configuration)

### Ende: ...lösche den Test

...