Goal of this post is to write a short test using Pytest.
Tool/prerequisites we are going to use: Visual Studio Code (or any file editor), python 3+.
GitRepo is available here.
Testing is and will be essential when coding. To make our life easier, developers created many frameworks and helpers to quickly achieve high code coverage. One well know library for Python is Pytest, which we are going to use in this article.
Start a new project/folder using your favorite editor and create a requirements file for PIP, we are going to use test_requirements.txt. Add our only dependency:
pytest
Install our dependency with the following command (running from the folder where the test_requirements.txt is):
pip install -r test_requirements.txt
Now we can add our code file with the name basic_calculator.py:
def sum(numberOne: int, numberTwo: int):
return numberOne + numberTwo
It doesn’t do anything fancy, just sums two number.
Now comes the test. Add a new file called test_basic_calculator.py:
import basic_calculator
class TestHandler:
def test_sum_one(self):
sum = basic_calculator.sum(2,3)
assert sum == 5
def test_sum_two(self):
sum = basic_calculator.sum(66,55)
assert sum == 121
We are done with coding, let’s run our test (give the following command from folder):
python -m pytest
The result should be something similar to this:
What happened here? We asked python to run the module called pytest in the working folder. Pytest then searches for filenames which start with “test_” and looks for classes starting with “Test” containing function names starting with “test”.
Narrowing down the test scope
We might want to run test only on one file, to do so we can specify it by name:
python -m pytest ./test_basic_calculator.py
There are further options as well
Run only one class in a file:
python -m pytest ./test_basic_calculator.py -k "Test_Handler"
or
python -m pytest ./test_basic_calculator.py::Test_Handler
If you only want to run one test in a class:
python -m pytest ./test_basic_calculator.py -k "Test_Handler and test_sum_one"
or
python -m pytest ./test_basic_calculator.py::Test_Handler::test_sum_one
Happy coding!