58 lines
1.8 KiB
Python
58 lines
1.8 KiB
Python
from pathlib import Path
|
|
|
|
import pandas as pd
|
|
import pytest
|
|
|
|
|
|
@pytest.fixture(scope="package")
|
|
def daily_univariate_ts() -> pd.DataFrame:
|
|
"""Daily univariate time series with 2 years of data"""
|
|
return pd.read_csv(Path(__file__).parent / "data.csv", parse_dates=["ds"])
|
|
|
|
|
|
@pytest.fixture(scope="package")
|
|
def subdaily_univariate_ts() -> pd.DataFrame:
|
|
"""Sub-daily univariate time series"""
|
|
return pd.read_csv(Path(__file__).parent / "data2.csv", parse_dates=["ds"])
|
|
|
|
|
|
@pytest.fixture(scope="package")
|
|
def large_numbers_ts() -> pd.DataFrame:
|
|
"""Univariate time series with large values to test scaling"""
|
|
return pd.read_csv(Path(__file__).parent / "data3.csv", parse_dates=["ds"])
|
|
|
|
|
|
def pytest_configure(config):
|
|
config.addinivalue_line("markers", "slow: mark tests as slow (include in run with --test-slow)")
|
|
|
|
|
|
def pytest_addoption(parser):
|
|
parser.addoption("--test-slow", action="store_true", default=False, help="Run slow tests")
|
|
parser.addoption(
|
|
"--backend",
|
|
nargs="+",
|
|
default=["CMDSTANPY"],
|
|
help="Probabilistic Programming Language backend to perform tests with.",
|
|
)
|
|
|
|
|
|
def pytest_collection_modifyitems(config, items):
|
|
if config.getoption("--test-slow"):
|
|
return
|
|
skip_slow = pytest.mark.skip(reason="Skipped due to the lack of '--test-slow' argument")
|
|
for item in items:
|
|
if "slow" in item.keywords:
|
|
item.add_marker(skip_slow)
|
|
|
|
|
|
def pytest_generate_tests(metafunc):
|
|
"""
|
|
For each test, if `backend` is used as a fixture, add a parametrization equal to the value of the
|
|
--backend option.
|
|
|
|
This is used to re-run the test suite for different probabilistic programming language backends
|
|
(e.g. cmdstanpy, numpyro).
|
|
"""
|
|
if "backend" in metafunc.fixturenames:
|
|
metafunc.parametrize("backend", metafunc.config.getoption("backend"))
|