"""Define global fixtures."""
from os.path import join
import pytest
from cobra import Metabolite, Model, Reaction
from cobra.test import create_test_model, data_dir
from cobra.util import solver as sutil
try:
from cPickle import load as _load
except ImportError:
from pickle import load as _load
[docs]def pytest_addoption(parser):
try:
parser.addoption("--run-slow", action="store_true", help="run slow tests")
parser.addoption(
"--run-non-deterministic",
action="store_true",
help="run tests that sometimes (rarely) fail",
)
except ValueError:
pass
@pytest.fixture(scope="session")
[docs]def data_directory():
return data_dir
@pytest.fixture(scope="session")
[docs]def empty_once():
return Model()
@pytest.fixture(scope="function")
[docs]def empty_model(empty_once):
return empty_once.copy()
@pytest.fixture(scope="session")
[docs]def small_model():
return create_test_model("textbook")
@pytest.fixture(scope="function")
[docs]def model(small_model):
return small_model.copy()
@pytest.fixture(scope="session")
[docs]def large_once():
return create_test_model("ecoli")
@pytest.fixture(scope="function")
[docs]def large_model(large_once):
return large_once.copy()
@pytest.fixture(scope="session")
[docs]def medium_model():
return create_test_model("salmonella")
@pytest.fixture(scope="function")
[docs]def salmonella(medium_model):
return medium_model.copy()
@pytest.fixture(scope="function")
[docs]def solved_model(data_directory):
model = create_test_model("textbook")
with open(join(data_directory, "textbook_solution.pickle"), "rb") as infile:
solution = _load(infile)
return solution, model
@pytest.fixture(scope="session")
[docs]def tiny_toy_model():
tiny = Model("Toy Model")
m1 = Metabolite("M1")
d1 = Reaction("ex1")
d1.add_metabolites({m1: -1})
d1.upper_bound = 0
d1.lower_bound = -1000
tiny.add_reactions([d1])
tiny.objective = "ex1"
return tiny
[docs]stable_optlang = ["glpk", "cplex", "gurobi"]
[docs]all_solvers = ["optlang-" + s for s in stable_optlang if s in sutil.solvers]
@pytest.fixture(params=all_solvers, scope="session")
[docs]def opt_solver(request):
return request.param
@pytest.fixture(scope="function")