2016-05-16 9 views
-1

so ich versuche, einig Unit-Test in dem tcl gui, in einem Teil des Unit-Tests zu tun, ist es eine tk_messageBox, das wird angezeigt und wenn ich drücken Sie die Eingabetaste nicht, wird nicht das Gerät zu testen weitereintritt, wenn tk_messageBox in tcl erscheint

tun jemand von euch wissen, wie die Enter-Taste (Tastendruck) zu replizieren? oder besser noch, ein Befehl in tk_messageBox zu injizieren, um es weg

versucht, den INVOKEBefehl gehen zu lassen, aber die tk_messageBox hat keinen Namen

tk_messageBox -icon error -title TEST -message "this is a test tkbox" -type ok -parent . 

Antwort

0

Es hängt davon ab, welche Plattform Sie sind auf. Wenn Sie auf Unix sind, können Sie tun:

# Widget name depends on what is the parent widget and message box type 
# This is correct for -parent . -type ok 
.__tk__messagebox.ok invoke 

Dies wird nicht unter Windows oder OS X arbeiten, weil diese beiden Plattformen die nativen Systemdialoge verwenden. Wenn Sie dort sind, müssen Sie den Code anpassen, um nicht zuerst einen Nachrichtenfelddialog zu erstellen oder fragen Sie ein generisches Automatisierungswerkzeug, um auf die Schaltfläche für Sie klicken.

+0

hi, das wäre der Kommentar, den ich suche zum. Ich kann nicht wirklich überall dank ein paar finden :) – user2399211

0

Da Sie Tk tk_messageBox nicht testen müssen, können Sie diesen Teil des Codes einfach überspringen. Legen Sie eine Variable in der Testeinheit:

set ::_testmode true 

In Ihrem Code:

if { ! [info exists ::_testmode] } { 
    tk_messageBox ... 
} else { 
    # if you are using the return code from tk_messageBox, you 
    # can set it here. 
} 

Natürlich ist dies ein bisschen unordentlicher der Quellcode macht, aber die Tests funktionieren. Ich musste ähnliche if-Blöcke um tk_getSaveFile und tk_getOpenFile erstellen, ähnlich wie Donal auf tk_messageBox hingewiesen hat, diese können unter Windows und Mac OS X nicht einfach übersprungen werden.

+0

hallo Dank für die Eingabe aber mit dieser Methode bedeuten würde tausend Zeilen Code für den Unit-Test zu ändern, die sie un-effizient, aber dank machen würden :) – user2399211

+0

, die ein bisschen sein könnten viel, ja. Wenn Sie auf Windows sind, dann würde ich in das Programm "autohotkey" schauen - es könnte in der Lage sein, einige dieser Aufgaben für Sie zu automatisieren. –

Verwandte Themen