Verwendung von Variablen in Testfällen
Motivation
Bei der Erstellung automatisierter Tests kann es notwendig werden, Werte für eingetragene Daten aus Variablen zu beziehen statt sie fest in den Test einzutragen. Außerdem kann es die Lesbarkeit erhöhen, wenn beim Umgang mit mehreren verknüpften Datensätzen etwa deren Kurzname über eine Variable referenziert statt überall dupliziert wird.
Definition einer Variable
Variablen müssen vor ihrer Verwendung im Test deklariert und definiert werden. Dies ist auf Ebene des Testfalls möglich. Die Syntax dazu lässt sich am einfachsten mit folgendem Beispiel erklären:
class MyTestWithVariables extends BaseWebClientSpec {
@Shared
def myCustomerName = "Testkunde für meine Tests"
@Shared def myActivityName = "Name meiner Testaktivität"
// Hier folgen die Testschritte
}
Dabei ist die Angabe von @Shared
erforderlich, damit der Wert der Variable in allen Testschritten ordnungsgemäß verfügbar ist. Die Angabe von @Shared
kann wie im Beispiel gezeigt eine Zeile über der Variablendeklaration oder in der gleichen Zeile erfolgen. In diesem Beispiel sind in der Testklasse dadurch die Variablen myCustomerName
mit dem Wert "Testkunde für meine Tests" und myActivityName
mit dem Wert "Name meiner Testaktivität" verfügbar.
Nutzung einer Variable
Variablen können an allen Stellen im Test genutzt werden, wo normalerweise feste Zeichenketten erwartet werden. Beispiele dafür sind etwa erwartete Werte für Feldwertprüfungen oder Werte, die in Felder eingetragen werden sollen.
Die Verwendung erfolgt dabei durch die Eingabe von ${variablenName}
-Platzhaltern innerhalb der Anführungszeichen der Zeichenkette. Dabei wird dann der Platzhalter durch den Wert der angegebenen Variable ersetzt. Auch eine Kombination aus festen Werten und Variablenplatzhaltern ist möglich, wie das nächste Beispiel zeigt.
class MyTestWithVariables extends BaseWebClientSpec {
@Shared def activityName = "Testaktivität"
def "Demonstrate variable usage on Activity mask"() {
given:
open entity "Activity"
create dataset
set field "Subject.Activity" to "${activityName}"
field "Subject.Activity" should be "Testaktivität"
set field "Subject.Activity" to "Meine ${activityName}"
field "Subject.Activity" should be "Meine Testaktivität"
close level
pick dialog option NO
}
}
Bei der Verwendung von Variablen muss darauf geachtet werden, dass sie stets mit einem Kleinbuchstaben beginnen, wie in dem vorherigen Beispiel "activityName".
Anwender mit Scripting-Erfahrung, etwa durch die Arbeit mit BPM-Scripting oder Maskenscripting fragen sich möglicherweise, ob die Variablen auch "direkt" im Test-Script verwendet werden können, statt immer über die String-Ersetzung verwendet werden zu müssen.
Leider ist dies aufgrund der technischen Basis der Test-Studio "Programmiersprache" beziehungsweise Domain Specific Language (DSL) nicht zuverlässig möglich. In den meisten Fällen wird die Verwendung von Variablen außerhalb von Strings in Verbindung mit Test-Studio Keywords zu Fehlern beziehungsweise unerwartetem Verhalten führen und wird daher nicht unterstützt.