Exemple de scénario de test automatique et exécution de test de valeur d'entrée manuelle avec VS Code avec AtCoder

introduction

Jusqu'à présent, AtCoder était réalisé en Python x Jupyter Lab. Cette fois, je souhaite utiliser VS Code récemment, et j'ai eu du mal à exécuter des exemples de cas de test à chaque fois, je vais donc le laisser car il y avait un moyen d'essayer Google!

Le but cette fois est de pouvoir effectuer les opérations suivantes.

  1. Exécutez automatiquement le test dans l'exemple de cas de test avec Ctrl + Shift + B``` sur VS Code
  2. Exécutez un test avec des valeurs entrées manuellement avec `` F5 '' sur VS Code

environnement

Je construis sur Ubuntu cette fois, mais comme j'utilise des scripts shell et VS Code, c'est correct si le sous-système Windows pour Linux est inclus dans Windows ainsi que Mac ...?

[Mis à jour le 28 mai 2020]

Il y avait un article que j'ai pratiqué sur Windows 10! Competition Pro avec Python et VSCode-Simplification de la saisie standard et automatisation de l'exemple de jugement de cas-

Site référencé

J'ai l'impression de pouvoir ramasser et manger de chacun. Cela a été très utile. Je vous remercie! Création d'un environnement professionnel compétitif avec Visual Studio Code (édition pratique) Créer un environnement Python pour les professionnels de la concurrence avec VS Code sur Windows [GitHub]online-judge-tools

Structure des dossiers

J'ai coupé un répertoire appelé AtCoder et construit l'environnement là-bas. Les problèmes du concours sont tous plongés dans le répertoire des problèmes avec le nom de fichier {nom du concours} \ _ {nom du problème} .py. Veuillez noter que la partie {nom du concours} du nom de fichier ne fonctionnera que si elle est identique à l'URL de la page du concours AtCoder.

//atcoder.jp/contests/{Nom du concours}


 Exemple de nom de fichier:
 AtCoder Beginner Contest 158 Un problème
 (URL:https://atcoder.jp/contests/abc158/tasks/abc158_a)
  →abc158_a.py
 Hitachi, Ltd. Concours de programmation de la Division des systèmes sociaux 2020 Problème C
 (URL:https://atcoder.jp/contests/hitachi2020/tasks/hitachi2020_c)
  →hitachi2020_c.py

```shell

AtCoder
├── cptest.sh #Cette fois, le script shell principal
│
├── input.txt #Fichier pour mettre la valeur entrée manuellement de l'objectif 2
│
├── problems #Répertoire pour stocker les problèmes de concours
│
├── test #Répertoire de stockage des exemples de cas de concours
│
└── .vscode #Répertoire de stockage des fichiers de configuration VS Code
    ├── launch.json #Fichier de paramètres de l'objectif 2
    └── tasks.json #Fichier de paramètres de l'objectif 1

Installez et connectez-vous aux outils de juge en ligne

C'est un outil incroyablement utile qui extrait des exemples de cas de test en question du site du concours AtCoder et les exécute automatiquement.

Installez avec pip.

bash



$ pip install online-judge-tools

Une fois l'installation terminée, vous devrez vous connecter avec votre compte AtCoder pour utiliser l'outil. Connectez-vous avec la commande suivante.

bash



$ oj login -u {Nom d'utilisateur} -p {mot de passe} "https://atcoder.jp/"

Vous pouvez vérifier votre connexion ci-dessous.

bash



oj login --check "https://atcoder.jp/"

cptest.sh Si vous exécutez le nom du fichier de problème sans extension (.py) comme cptest.sh abc158_a``` pendant que la connexion est terminée, le test dans l'exemple de cas de test sera exécuté automatiquement. C'est un script shell qui le fait. L'attribuera au code VS Ctrl + Shift + B '' ', donc vous n'avez pas à le taper dans le terminal pour l'exécuter.

cptest.sh



#!/bin/bash

problem_name=$1
test_dir=test/${problem_name}
base_url=${problem_name%_*}

# make test directory
if [ ! -e ${test_dir} ]; then
    oj dl -d test/${problem_name} https://atcoder.jp/contests/${base_url}/tasks/${problem_name}
fi

oj test -c "python3 problems/${problem_name}.py" -d test/${problem_name}

oj dl -d test~Téléchargez les informations de l'exemple de cas de test de la question du concours dans le répertoire de test dans la partie deoj test -c~Test en utilisant le cas de test téléchargé dans la section.

Paramètres dans VS Code

input.txt Il s'agit d'un fichier texte contenant les valeurs d'entrée pour l'exécution manuelle des tests. Vous pouvez l'utiliser depuis le terminal sous la forme de python abc158_a.py <input.txt```. Sera assigné à `` F5 '', donc il ne sera pas exécuté à partir du terminal.

input.txt


(Décrivez le contenu que vous souhaitez transmettre comme entrée standard)

task.json Il s'agit d'un fichier de paramètres pour attribuer l'exécution du test dans l'exemple de cas de test à Ctrl + Shift + B```. Le fichier .py étant ouvert, appuyez sur Ctrl + Maj + B '' pour configurer la tâche de construction et créez task.json '' comme suit.

task.json


{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "test_atcoder_sample",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "type": "shell",
            "command": "${workspaceFolder}/cptest.sh",
            "args": [
                "${fileBasenameNoExtension}"
        }
    ]
}

launch.json f5Il devient un fichier de paramétrage pour exécuter le débogueur de vs code. Si vous appuyez sur `` F5 '' alors que le fichier .py que vous souhaitez déboguer est ouvert, il prendra le contenu de input.txt comme entrée et exécutera le fichier .py.

Launch.json peut être affiché en appuyant sur Ctrl + Maj + D '' ou F5 '' dans VS Code pour entrer en mode débogage et en cliquant sur l'engrenage supérieur gauche. Lors du réglage pour la première fois, «Créer un nouveau fichier launch.json» apparaîtra (devrait) sur le côté gauche, alors créez-en un nouveau pour le fichier Python.

launch.json


{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "args": [
                "<",
                "input.txt"
            ]
        }
    ]
}

Test de fonctionnement (exemple de abc158_a.py)

Après avoir terminé les paramètres ci-dessus, tout ce que vous avez à faire est d'écrire et d'exécuter le code. Prenons Un problème d'ABC158 comme exemple.

[Objectif 1] Exécution du test avec un exemple de scénario de test

Ci-dessous se trouve la capture lorsque Ctrl + Shift + B``` est exécuté.

Screenshot from 2020-03-15 01-43-35.png Tous les exemples de cas de test sont AC.

[Objectif 2] Exécution manuelle des tests

J'effectuerai également un test manuel. Testons avec l'entrée "AAA". Après avoir enregistré en tant que "AAA" dans input.txt, revenez à abc158_a.py et appuyez sur F5```.

input.txt


AAA

Le résultat sera renvoyé comme "Non".

finalement

Bien sûr, le test dans l'exemple de cas de test est automatisé, mais il est également très confortable de pouvoir définir la valeur d'entrée dans input.txt. Ceci est particulièrement utile lorsque la valeur d'entrée est une liste ou lorsqu'elle est répétée * i * fois. Les outils de juge en ligne utilisés cette fois semblent être capables d'automatiser les soumissions autres que des exemples de tests, il peut donc être bon d'essayer diverses choses. Aussi, j'ai fait mes débuts avec VS Code à cette occasion, mais il semble qu'il y ait beaucoup de fonctions que je n'ai pas encore maîtrisées, alors j'aimerais continuer à m'y consacrer! !!

Recommended Posts

Exemple de scénario de test automatique et exécution de test de valeur d'entrée manuelle avec VS Code avec AtCoder
Créer un environnement d'exécution python avec VS Code
Renforcez avec le test de code ⑦
Renforcez avec le test de code ⑨
Renforcez avec le test de code ③
Renforcez avec le test de code ⑤
Renforcez avec le test de code ④
Renforcez avec le test de code ②
Renforcez avec le test de code ①
Renforcez avec le test de code ⑧
Renforcez avec le test de code ⑨
Génération automatique du code de test PyCharm
Déboguer Python avec VS Code
Comment créer un environnement d'exécution Python et Jupyter avec VSCode