2015-06-12 14 views
7

Sto sviluppando un'app terminale. E mi chiedo come può uno testare l'interfaccia utente del terminale fatta con ncurses. Qualcuno ha qualche esperienza con questo tipo di test?Python testing ncurses

  • Finora il mio colpo migliore sarà quello di testare app con capturing stdout e confrontarlo con quello che dovrebbe essere. Ma sono preoccupato del fatto che non potrei mai creare il caso comparabile per ogni dimensione del terminale, i codici dei colori del testo per (256bit, 24bit), ecc ...

  • Un modo per testare sarebbe simulare la tastiera ma come potrebbe Metto alla prova il comportamento visivo?

Io sono incapaci obout questo problema ...

risposta

1

Confrontando uscita schermo è difficile, poiché ncurses aggiornamenti solo le parti alterate dello schermo, utilizzando cursore-indirizzamento e altri metodi. Invece, confrontare il contenuto dello schermo noto a ncurses in diversi momenti nel tempo è l'approccio migliore.

Si potrebbe costruire una schermata-dump utilizzando instr per ottenere il testo (ma che omette gli attributi come il colore). L'interfaccia Python per ncurses ha anche inch (ma che assume caratteri sono 8-bit)

Sarebbe bello usare putwin, ma che (fino a poco) salva la finestra in binario forma. Ncurses6 in arrivo utilizza uno text dump, che potrebbe essere diff'd. Il cambiamento non è visibile ai chiamanti (dal momento che putwin/getwin ha sempre trattato il formato di file come un segreto) e, in linea di principio, potrebbe essere attivato in una build di ncurse5. Per questo, probabilmente dovresti costruire i tuoi ncurses.

+0

Waw grazie per grande risorsa di link! Questo è quello che stavo cercando, qualcosa che puoi leggere dalla finestra speciale cordinate per testare semplici posizioni di char e text, bene i colori hanno priorità secondaria quindi instr sarà la strada da percorrere. Grazie ancora! – urosjarc

1

Il programma che si desidera verificare è uno script TCL chiamato Expect. È progettato per automatizzare le interazioni basate sul testo.

Per Wikipedia:

[Aspettatevi] viene utilizzato per automatizzare il controllo di applicazioni interattive come telnet, ftp, passwd, fsck, rlogin, punta, SSH, e altri. Expect utilizza pseudo terminali (Unix) o emula una console (Windows), avvia il programma di destinazione e quindi comunica con esso, proprio come farebbe un utente umano, tramite il terminale o l'interfaccia della console.

Immagino che sia possibile impostare uno script Expect per eseguire un'interazione standard e segnalare eventuali problemi di interazione lungo il percorso.

Dubito che qualsiasi programma possa testare l'estetica (ovvero come appare, ecc. aggiungendo un decoratore alle chiamate della funzione PyCurses che tiene traccia delle dimensioni delle varie parti e segnala eventuali sovrapposizioni o problemi.

Per maggiori informazioni sulla decoratori Python, consulta questo articolo: Understanding Python Decorators in 12 Easy Steps!

+0

Grazie per le informazioni su Expect, non ero a conoscenza di questa libreria e ha anche collegamenti Python! :) – urosjarc