[PYTHON] Automatischer Testfall für Testfälle und manuelle Eingabe des Wertes mit VS-Code und AtCoder

Einführung

Bisher wurde AtCoder in Python x Jupyter Lab durchgeführt. Dieses Mal möchte ich VS Code neu verwenden, und ich hatte jedes Mal Probleme beim Ausführen von Beispieltestfällen. Daher werde ich es verlassen, da es eine Möglichkeit gab, Google auszuprobieren!

Dieses Mal ist es das Ziel, die folgenden Operationen ausführen zu können.

  1. Führen Sie den Test im Beispieltestfall automatisch mit `` `Strg + Umschalt + B``` im VS-Code aus
  2. Führen Sie einen Test mit manuell eingegebenen Werten mit `` `F5``` im VS-Code durch

Umgebung

Ich baue diesmal auf Ubuntu auf, aber da ich Shell-Skripte und VS-Code verwende, ist es in Ordnung, wenn Windows Subsystem für Linux sowohl in Windows als auch in Mac enthalten ist ...?

[Aktualisiert am 28. Mai 2020]

Es gab einen Artikel, den ich unter Windows 10 geübt habe! Competition Pro mit Python und VSCode - Vereinfachung der Standardeingabe und Automatisierung der Beurteilung von Beispielfällen

Referenzierte Site

Es fühlt sich an, als könnte ich von jedem abholen und essen. Es war sehr hilfreich. Vielen Dank! Aufbau eines wettbewerbsfähigen professionellen Umfelds mit Visual Studio Code (praktische Ausgabe) Erstellen einer Python-Umgebung für Profis mit VS Code unter Windows [GitHub]online-judge-tools

Ordnerstruktur

Ich schneide ein Verzeichnis namens AtCoder und baue dort die Umgebung auf. Wettbewerbsprobleme werden alle mit dem Dateinamen {Wettbewerbsname} \ _ {Problemname} .py in das Problemverzeichnis getaucht. Bitte beachten Sie, dass der Teil {Dateiname} des Dateinamens nur funktioniert, wenn er mit der URL der AtCoder-Wettbewerbsseite übereinstimmt.

//atcoder.jp/contests/{Name des Wettbewerbs}


 Beispiel für Dateinamen:
 AtCoder Anfängerwettbewerb 158 Ein Problem
 (URL:https://atcoder.jp/contests/abc158/tasks/abc158_a)
  →abc158_a.py
 Programmierwettbewerb 2020 C der Hitachi, Ltd.-Abteilung für soziale Systeme Problem
 (URL:https://atcoder.jp/contests/hitachi2020/tasks/hitachi2020_c)
  →hitachi2020_c.py

```shell

AtCoder
├── cptest.sh #Diesmal das Haupt-Shell-Skript
│
├── input.txt #Datei, um den manuell eingegebenen Wert von Ziel 2 zu setzen
│
├── problems #Verzeichnis zum Speichern von Wettbewerbsfragen
│
├── test #Verzeichnis zum Speichern von Wettbewerbsbeispielen
│
└── .vscode #Verzeichnis zum Speichern von VS-Code-Konfigurationsdateien
    ├── launch.json #Einstellungsdatei für Ziel 2
    └── tasks.json #Einstellungsdatei für Ziel 1

Installieren Sie und melden Sie sich bei Online-Judge-Tools an

Es ist ein wahnsinnig nützliches Tool, das Beispiel-Testfälle von der AtCoder-Wettbewerbsseite entfernt und automatisch ausführt.

Mit pip installieren.

bash



$ pip install online-judge-tools

Nach Abschluss der Installation müssen Sie sich mit Ihrem AtCoder-Konto anmelden, um das Tool verwenden zu können. Melden Sie sich mit dem folgenden Befehl an.

bash



$ oj login -u {Nutzername} -p {Passwort} "https://atcoder.jp/"

Sie können Ihr Login unten überprüfen.

bash



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

cptest.sh Wenn Sie den Namen der Problemdatei ohne Erweiterung (.py) wie `cptest.sh abc158_a``` ausführen, während Sie angemeldet sind, wird der Test im Beispieltestfall automatisch ausgeführt. Es ist ein Shell-Skript, das dies tut. Weist es dem VS-Code `Strg + Umschalt + B``` zu, sodass Sie es nicht in das Terminal eingeben müssen, um es auszuführen.

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~Laden Sie die Informationen des Beispieltestfalls der Wettbewerbsfrage im Testverzeichnis im Teil von herunteroj test -c~Testen Sie mit dem im Abschnitt heruntergeladenen Testfall.

Einstellungen im VS-Code

input.txt Es ist eine Textdatei, die die Eingabewerte für die manuelle Testausführung enthält. Sie können es vom Terminal aus in Form von `python abc158_a.py <input.txt``` verwenden. Wird `F5``` zugewiesen, so dass es nicht vom Terminal ausgeführt wird.

input.txt


(Beschreiben Sie den Inhalt, den Sie als Standardeingabe übergeben möchten)

task.json Dies ist eine Einstellungsdatei zum Zuweisen der Testausführung im Beispieltestfall zu `Strg + Umschalt + B```. Drücken Sie bei geöffneter .py-Datei Strg + Umschalt + B```, um die Build-Task zu konfigurieren und `` task.json``` wie folgt zu erstellen.

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 f5Es wird zu einer Einstellungsdatei für die Ausführung des Debuggers von vs-Code. Wenn Sie `` `F5``` drücken, während die zu debuggende .py-Datei geöffnet ist, wird der Inhalt von input.txt als Eingabe verwendet und die .py-Datei ausgeführt.

Launch.json kann angezeigt werden, indem Sie im VS-Code `Strg + Umschalt + D``` oder` F5``` drücken, um in den Debug-Modus zu wechseln und auf den oberen linken Gang zu klicken. Bei der erstmaligen Einstellung wird auf der linken Seite "Neue Datei launch.json erstellen" angezeigt (sollte angezeigt werden). Erstellen Sie daher eine neue Datei für die Python-Datei.

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"
            ]
        }
    ]
}

Testlauf (Beispiel für abc158_a.py)

Nachdem Sie die obigen Einstellungen vorgenommen haben, müssen Sie nur noch den Code schreiben und ausführen. Nehmen wir als Beispiel Ein Problem von ABC158.

[Ziel 1] Testausführung mit Beispieltestfall

Unten ist die Aufnahme, wenn `` `Strg + Umschalt + B``` ausgeführt wird.

Screenshot from 2020-03-15 01-43-35.png Alle Beispieltestfälle sind AC.

[Ziel 2] Manuelle Testausführung

Ich werde auch einen manuellen Test durchführen. Testen wir mit dem Eingang "AAA". Gehen Sie nach dem Speichern als "AAA" in input.txt zurück zu abc158_a.py und drücken Sie `` `F5```.

input.txt


AAA

Das Ergebnis wird als "Nein" zurückgegeben.

Schließlich

Natürlich ist der Test im Beispieltestfall automatisiert, aber es ist auch sehr bequem, den Eingabewert in input.txt festlegen zu können. Dies ist besonders nützlich, wenn der Eingabewert eine Liste ist oder wenn er * i * Mal wiederholt wird. Die diesmal verwendeten Online-Richtertools scheinen in der Lage zu sein, andere Einreichungen als Beispieltests zu automatisieren. Daher kann es sinnvoll sein, verschiedene Dinge auszuprobieren. Auch ich habe bei dieser Gelegenheit mein Debüt mit VS Code gegeben, aber es scheint, dass es viele Funktionen gibt, die ich noch nicht beherrsche, deshalb möchte ich mich weiterhin diesem Thema widmen! !!

Recommended Posts

Automatischer Testfall für Testfälle und manuelle Eingabe des Wertes mit VS-Code und AtCoder
Erstellen Sie eine Python-Ausführungsumgebung mit VS-Code
Mit Codetest stärken ⑦
Mit Codetest stärken ⑨
Mit Codetest stärken ⑤
Mit Codetest stärken ④
Mit Codetest stärken ②
Mit Codetest stärken ①
Mit Codetest stärken ⑧
Mit Codetest stärken ⑨
Automatische Generierung des PyCharm-Testcodes
Debuggen Sie Python mit VS-Code
So erstellen Sie eine Python- und Jupyter-Ausführungsumgebung mit VSCode