2017-09-28 15 views
1

Y at-il un moyen que je peux nourrir plusieurs entrées dans stdin, pour être facilement analysé lorsque input() est appelé? J'essaie d'autograde les soumissions par les étudiants, et leur code utilise la fonction input(). Mais c'est assez fatigant de tester un par un, et je cherche à le faire automatiquement.Flux entrée séquentielle multiple à stdin python

Je peux actuellement soit le code précédez après le code des élèves, ou après (<MORE CODE HERE>)

Idéalement, l'entrée stdin serait comme Image1.jpg <enter> 2 <enter> Y <enter> 3 <enter> N et il fonctionne que dans le code.

Voici un échantillon soumission des étudiants, des endroits où je peux PREPEND/append Code

<MORE CODE HERE> 
def question1(): 
    YN = 'Y' 
    function_dict = { '1':action_1, '2':action_2, '3':action_3} 

    filename = input('Please enter the file name') 
    while(YN=='Y'): 
     print('Please select an operation you want to perform') 
     print('1. action_1') 
     print('2. action_2') 
     print('3. action_3') 
     choice = input('What is your choice?') 
     function_dict[choice](filename) 
     YN = input('Do you want to continue? (Y/N)') 

<MORE CODE HERE> 
question1() 

Merci!

Répondre

0

Si vous avez un nom de fichier normalisé pour les projets comme .py, et un format et une sortie attendus pour les questions, vous pouvez définir une fonction pour appeler un seul projet avec le module python EasyProcess puis itérer pour tous les projets correspondant à modèle de nom de fichier particulier dans un dossier et confirmez si la sortie est correcte.

+0

Cela ne résout cependant pas mon problème? Mon problème est que je veux automatiser les cas de test pour un fichier particulier, en utilisant stdin – Wboy

+0

Je ne comprends pas pourquoi vous devez utiliser stdin pour automatiser les cas de test. Pourriez-vous clarifier? –

+0

Si vous regardez le code, La fonction n'a pas d'arguments. il prend des valeurs de 'input()'. par conséquent, pour le tester, j'ai besoin d'entrer des choses à stdin. – Wboy