A python cli tool to test competitive programming solutions(code) against multiple test cases and measure execution time.
This tool comes handy when the programmer is dealing with a problem having larger amount of test cases.
Install using pip
sudo pip3 install --user --upgrade competest
Run Powershell/cmd as admin and type:
pip install competest
Alternatively, Windows users can download the latest competest.exe file from releases.
competest is a command line program to test competitive coding problems for test cases. It requires python 3.6+ to be installed. It is licensed under GPL-v3 License.
As of now, supported Languages are:
- C
- C++
- java
- python
- pypy
- exe(i.e. compiled executables)
Usage:
competest [OPTIONS] [python|java|pypy|exe] PROGRAM_FILE
Example:
competest python program1.py -t tests.json
If the test case file has the same name as the program file, -t
option can be omitted. competest
will then look for a json
or a txt
file with the same name as the program file in the same folder as the program file. If test case file is not found, it will thow an Error
competest python program1.py
The test case file should contain all the test cases that you want to test your code against.
Note: The test case format is decided based on the file extension so the file
extension must be .txt
or .json
.
5
3 2 4 5 6
2
12
Note: input is followed by output and separated by a blank line.
5
3 2 4 5 6
2
12
7
3 2 4 5 6 10 16
10
Note: Each test case is also separated by a blank line.
[
{
"input":[
"5",
"3 2 4 5 6"
],
"output":[
"2",
"1 2"
]
}
]
Note: input
and output
are arrays of strings where each string is a line of input/output
[
{
"input":[
"5",
"3 2 4 5 6"
],
"output":[
"2",
"1 2"
]
},
{
"input":[
"7",
"3 2 4 5 6 10 16"
],
"output":["10"]
}
]
-t, --test-cases FILENAME File containing test cases.
-a, --compiler-args ARGUMENTS command line arguments to be passed to
compiler(for compiled languages only)
-h, --help Show this message and exit.
You can pass extra arguments and flags to the compiler using -a
option.
Don't pass -o
flag to C/C++ compiler as it is not required and handled
by the tool itself.
Java
javac classname.java
C
gcc -O2 -lm filename.c
C++
g++ -O2 -lm filename.cpp
To run competest directly use
python3 run.py
To run the tests use
python3 run_tests.py
To build competest binary (install pyinstaller first)
pyinstaller -F run.py
The executable will be saved in dist
folder.
-
Add a simpler test case format - Improve Documentation
-
Add more metadata to setup.py - Add more language support
Made with