Tab Globale Konstanten¶
Auf diesem Tab können Konstanten mit Werten definiert werden, die während der gesamten Testausführung zur Verfügung stehen und ihren Wert nicht ändern.
Im oberen Teil des Tabs können die Konstanten direkt angelegt werden. Über die
Schaltfläche
wird eine neue Konstante angelegt. Hier gelten die üblichen
Konventionen für Python-Bezeichner (keine Sonder- oder Leerzeichen).
In Packages kann innerhalb von Ausdrücken (z. B. Vergleich, Berechnung, Bewertung usw.) auf die Werte mittels api.GlobalConstants.Name zugegriffen werden.
Testkonfigurationen und Testbenchkonfigurationen können mit globalen Konstanten parametriert werden. Insbesondere können dadurch einzelne Felder über die REST API befüllt werden. Um auf eine Globale Konstante in Testkonfigurationen oder Testbenchkonfigurationen zuzugreifen, kann der Ausdruck ${Const.Name} verwendet werden.
Für Details zur Verwendung von globalen Konstanten in Testbenchkonfigurationen siehe Einstellungen der Testbench durch die Testkonfiguration vorgeben.
Kann ein Ausdruck der Form ${Const.Name} beim Start der Testkonfiguration nicht aufgelöst werden (z.B. Konstante nicht definiert) führt das zu einer Fehlermeldung.
Wenn globale Konstanten umbenannt werden, kann angeben werden, ob ecu.test diese auch in allen Packages, Konfigurationen oder Konstantendefinitionsdateien im aktuellen Workspace umbenennen soll. Dazu sind im Ändern-Dialog die entsprechenden Kontrollkästchen anzuhaken.
Beschreibungstexte können ein- oder mehrzeilig sein. Ein Zeilenumbruch kann während der Bearbeitung mit <Strg>-<Enter> eingefügt werden.
Die hier angelegten globalen Konstanten können durch Klick auf die Schaltfläche
in eine *.gcd-Datei geschrieben werden. Dadurch können die
definierten Konstanten auch in anderen Testkonfigurationen oder an
Projektelementen wiederverwendet werden. Das Bearbeiten
von solchen Konstantendefinitionen ist im Konstantendefinitionseditor möglich.
Konstantendefinitionsdateien und -skripte nach Priorität¶
Hier können Konstantendefinitionsdateien referenziert werden.
Bei Betätigen der Schaltfläche
öffnet sich der Dateiauswahldialog und
eine bestehende *.gcd-Datei kann ausgewählt werden. Mit
wird die selektierte
Datei aus der Liste entfernt.
Je weiter oben eine Konstantendefinitionsdatei steht, um so höher ist deren Priorität. Das bedeutet, dass bei Namenskollision von Konstanten in den verschiedenen Dateien der Wert der obersten Datei gewählt wird.
Um diese Priorisierung der Konstantenwerte zu gewährleisten, wird die Liste von unten nach oben abgearbeitet. Es ist also zu beachten, dass Scripte nur auf Konstanten zugreifen können, die in darunterliegenden Listeneinträgen definiert wurden.
Eine Sonderrolle spielt das obere Eingabefenster für globale Konstanten. Diese sind in der Liste über den nicht-löschbaren Eintrag <statisch definierte Einträge> repräsentiert und werde entsprechend dessen Position priorisiert.
Ein weiterer vordefinierter Eintrag <Per REST API definierte Konstanten> definiert die Priorität der Konstanten, welche beim Konfigurationsstart über die REST API gesetzt werden.
Die Priorität einer selektierten Datei kann mit den Schaltflächen
und
manipuliert werden. Der angezeigte Dateiname ist relativ zum aktuellen Workspaceverzeichnis.
Bei Doppelklick auf den Dateinamen wird die Datei im Konstantendefinitionseditor geöffnet.
Konstantengenerator-Skripte
Neben *.gcd-Dateien ist es auch möglich Pythonskripte zu referenzieren, wodurch es möglich
ist Konstanten dynamisch beim Konfigurationsstart zu initialisieren. Diese Skripte müssen eine
Methode namens Init beinhalten, welche als einzigen Parameter ein Objekt vom Typ
GlobalConstantsDefinition
besitzt.
Die Priorisierung der hier definierten Konstanten erfolgt, analog zur Priorisierung von Konstanten
aus *.gcd-Dateien, anhand der Position der Datei in der Liste.
Über die Schaltfläche
lässt sich ein solcher Konstantengenerator anhand einer Vorlage
erstellen und speichern:
# -*- coding: utf-8 -*-
def Init(constants):
'''
This method can be used to dynamically create and evaluate global constants.
By defining constants here, they are added to the configuration.
It is also possible to throw an exception to abort the configuration start:
raise AbortConfigError(u'Reason for the error')
@param constants: Container for global constants
@type constants: <GlobalConstantsDefinition> (see documentation of Object Api)
'''
# Example implementation
constants.AppendConstant('ConstName', "'read from py-File'", 'Description for text value')
constValue = constants.GetValue('AnImportantConstant')
if constValue == 'None':
raise AbortConfigError(u'AnImportantConstant is not set!')