diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index 4823aebb02..509f962829 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -119,7 +119,7 @@ jobs: echo PYTEST_ADDOPTS="$PYTEST_ADDOPTS --cov --cov-report=xml" >> "$GITHUB_ENV" - name: Run pytest (not integration) run: | - pytest -m "not integration" + pytest --pyargs idaes -m "not integration" - name: Upload coverage report as GHA workflow artifact if: matrix.cov-report uses: actions/upload-artifact@v4 diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 2d7c3ae9d0..e46ff32c77 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -154,7 +154,7 @@ jobs: with: install-target: -r requirements-dev.txt - name: Run pytest (integration) - run: pytest -m integration + run: pytest --pyargs idaes -m integration examples: name: Run examples (py${{ matrix.python-version }}/${{ matrix.os }}) diff --git a/idaes/conftest.py b/idaes/conftest.py index d05983d941..4b9cd1a237 100644 --- a/idaes/conftest.py +++ b/idaes/conftest.py @@ -41,6 +41,47 @@ #### +def pytest_addoption(parser): + parser.addoption( + "--performance", + action="store_true", + dest="performance", + default=False, + help="enable performance decorated tests", + ) + + +MARKERS = { + "build": "test of model build methods", + "cubic_root": "test requires the compiled cubic root finder", + "iapws": "test requires the compiled IAPWS95 property package", + "initialization": "test of initialization methods. These generally require a solver as well", + "solver": "test requires a solver", + "ui": "tests of an aspect of the ui", + "unit": "quick tests that do not require a solver, must run in <2s", + "component": "quick tests that may require a solver", + "integration": "long duration tests", + "performance": "tests for the IDAES performance testing suite", +} + + +def pytest_configure(config: pytest.Config): + for name, description in MARKERS.items(): + config.addinivalue_line("markers", f"{name}: {description}") + + if not config.option.performance: + if len(config.option.markexpr) > 0: + setattr( + config.option, + "markexpr", + f"{config.option.markexpr} and not performance", + ) + else: + setattr(config.option, "markexpr", "not performance") + else: + setattr(config.option, "markexpr", "performance") + + REQUIRED_MARKERS = {"unit", "component", "integration", "performance"} ALL_PLATFORMS = {"darwin", "linux", "win32"} @@ -115,30 +156,6 @@ def _validate_required_markers(item, required_markers=None, expected_count=1): pytest.fail(msg) -def pytest_addoption(parser): - parser.addoption( - "--performance", - action="store_true", - dest="performance", - default=False, - help="enable performance decorated tests", - ) - - -def pytest_configure(config): - if not config.option.performance: - if len(config.option.markexpr) > 0: - setattr( - config.option, - "markexpr", - f"{config.option.markexpr} and not performance", - ) - else: - setattr(config.option, "markexpr", "not performance") - else: - setattr(config.option, "markexpr", "performance") - - ModuleName = str diff --git a/pytest.ini b/pytest.ini index 1a53544a9a..ccd02e93f6 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,19 +1,7 @@ [pytest] -addopts = --pyargs idaes - --durations=100 - -W ignore +addopts = --durations=100 + --durations-min=2 log_file = pytest.log log_file_date_format = %Y-%m-%dT%H:%M:%S log_file_format = %(asctime)s %(levelname)-7s <%(filename)s:%(lineno)d> %(message)s -log_file_level = INFO -markers = - build: test of model build methods - cubic_root : test requires the compiled cubic root finder - iapws: test requires the compiled IAPWS95 property package - initialization: test of initialization methods. These generally require a solver as well - solver: test requires a solver - ui: tests of an aspect of the ui - unit: quick tests that do not require a solver, must run in <2s - component: quick tests that may require a solver - integration: long duration tests - performance: tests for the IDAES performance testing suite +log_file_level = INFO \ No newline at end of file