PytestSetting Project Test System: Difference between revisions
Jump to navigation
Jump to search
(→Layout) |
(→Layout) |
||
Line 11: | Line 11: | ||
└─ tests | └─ tests | ||
├─ data | ├─ data | ||
├─ util.py <font color=teal># | ├─ util.py <font color=teal># get_file()</font> | ||
└─ my_module | └─ my_module | ||
└─ test_my_function.py | └─ test_my_function.py | ||
Line 20: | Line 20: | ||
from pathlib import Path | from pathlib import Path | ||
def | def get_file(path_rel_to_data): | ||
""" | """ | ||
Return the resolved path corresponding to path_rel_to_data, which is | Return the resolved path corresponding to path_rel_to_data, which is |
Latest revision as of 04:21, 25 June 2022
Internal
Install pytest
Install pytest
in the virtual environment associated with your project:
Layout
... └─ tests ├─ data ├─ util.py # get_file() └─ my_module └─ test_my_function.py
util.py
:
from pathlib import Path
def get_file(path_rel_to_data):
"""
Return the resolved path corresponding to path_rel_to_data, which is
relative to the test 'data' file. The function does not attempt to check
whether the file or directory exists.
try to resolve
:param path_rel_to_data:
:return: the resolved path
"""
return str(Path(Path(__file__).parent, './data/' + path_rel_to_data))
Environment
Add the path to the directory that contains the module to test (in this case ./src/main/python
contains my_module_to_test.py
). In case there is auxiliary code in the tests
directory, like util.py
, also add "./tests" to the path.
PYTHONPATH="$(dirname $0)/src:${PWD}/tests"
export PYTHONPATH
This can be added to .envrc
as follows:
PYTHONPATH="${PWD}/src:${PWD}/tests"
export PYTHONPATH
Structure of a Test File
import pytest
from pathlib import Path
from my_module_to_test import some_function
def get_test_file(file_name):
return Path(Path(__file__).parent, f'./data/{file_name}')