You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.8 KiB
41 lines
1.8 KiB
import os |
|
import pytest |
|
|
|
# Command line arguments for pytest |
|
def pytest_addoption(parser): |
|
parser.addoption('--baseline_dir', action="store", default='tests/inference/baseline', help='Directory for ground-truth images') |
|
parser.addoption('--test_dir', action="store", default='tests/inference/samples', help='Directory for images to test') |
|
parser.addoption('--metrics_file', action="store", default='tests/metrics.md', help='Output file for metrics') |
|
parser.addoption('--img_output_dir', action="store", default='tests/compare/samples', help='Output directory for diff metric images') |
|
|
|
# This initializes args at the beginning of the test session |
|
@pytest.fixture(scope="session", autouse=True) |
|
def args_pytest(pytestconfig): |
|
args = {} |
|
args['baseline_dir'] = pytestconfig.getoption('baseline_dir') |
|
args['test_dir'] = pytestconfig.getoption('test_dir') |
|
args['metrics_file'] = pytestconfig.getoption('metrics_file') |
|
args['img_output_dir'] = pytestconfig.getoption('img_output_dir') |
|
|
|
# Initialize metrics file |
|
with open(args['metrics_file'], 'a') as f: |
|
# if file is empty, write header |
|
if os.stat(args['metrics_file']).st_size == 0: |
|
f.write("| date | run | file | status | value | \n") |
|
f.write("| --- | --- | --- | --- | --- | \n") |
|
|
|
return args |
|
|
|
|
|
def gather_file_basenames(directory: str): |
|
files = [] |
|
for file in os.listdir(directory): |
|
if file.endswith(".png"): |
|
files.append(file) |
|
return files |
|
|
|
# Creates the list of baseline file names to use as a fixture |
|
def pytest_generate_tests(metafunc): |
|
if "baseline_fname" in metafunc.fixturenames: |
|
baseline_fnames = gather_file_basenames(metafunc.config.getoption("baseline_dir")) |
|
metafunc.parametrize("baseline_fname", baseline_fnames)
|
|
|