Our projects use both pytest and unittest frameworks.
You can run tests using either method.
The -vvv flag is used for verbosity, which provides more detailed output and is very helpful for debugging.
-
Using Pytest:
pytest unit -vvv
-
Using Unittest:
python3 -m unittest discover unit -vvv
Specify the directory containing your desired tests. For example, to run tests in my_test_dir:
pytest unit/my_test_dir -vvv
# OR
python3 -m unittest discover unit/my_test_dir -vvv-
Create a Test Folder
Inside theunitdirectory, create a folder for your new test. This folder should contain:- All source/header files needed for the test
BUILD- A python test script
__init__.py
-
Creating the BUILD File
- Make sure that all failing test targets get the
"manual"tag. For example:
# This is a test I expect to fail codechecker_test( name = "codechecker_fail", tags = [ "manual", ], targets = [ "test_fail", ], ) - Make sure that all failing test targets get the
-
Creating the Test File
- Your test script must follow the naming convention:
test_*.py - At the top of your test file, include the following snippet to correctly handle module imports:
from common.base import TestBase
- Create your test class by extending
TestBaseand implement your test methods.
- Your test script must follow the naming convention:
Warning
You should include this line in your test class, this sets the current working directory:
__test_path__ = os.path.dirname(os.path.abspath(__file__))For a test template look into unit/template
-
Create a folder in the foss folder with the name of the project.
-
The folder should contain:
- init.sh
-
The init.sh script should:
- Take the folder to which the project should be cloned/downloaded as the single command line argument
- Clone the test project into said folder
- To ensure the project doesn't change over time, check out a specific tag or commit instead of a branch!
- Copy the .bazelversion file, if it exists, from the root of codechecker_bazel into the projects directory. This file is usually set by developers using bazelisk, and is also used in CI.
- Append the WORKSPACE.template file to the WORKSPACE file of the project.
- Append the codechecker rules to the BUILD file of the project.
- There can be only two targets, codechecker_test and per_file_test