Skip to content

Support sandboxed environment selection for testing frameworks (pytest, uinttest) #24119

Open

Description

The feature request is to explicitly declare, which virtual environment should be used for tests.

I have sandboxed environments:

  • project dependecies (used for editable installs, etc.)
  • dev (used during development)
  • test (used for tests)

During development I want to set:

"python.defaultInterpreterPath": "${workspaceFolder}/.venv/dev/bin/python"

However, in that case, tests cannot be discovered:

[error] /Users/timon/work/dagcellent/dagcellent/.venv/dev/bin/python: No module named pytest

As soon as I activate the test venv, discovery works.

Note that setting:

"python.testing.pytestPath": "${workspaceFolder}/.venv/test.py3.11/bin/pytest",

seems to have no effect.


My .venv looks like this:

.venv
├── my_package
├── dev
└── test.py3.11

I am using hatch, but this can easily be replicated with poetry or other:

[tool.hatch.envs.dev]
extra-dependencies = [
    "pre-commit == 3.7.*",
    "ruff == 0.4.4",
    "mypy == 1.10.*",
]

[tool.hatch.envs.dev.scripts]
install = "pre-commit install --hook-type commit-msg"

[tool.hatch.envs.test]
extra-dependencies = [
    "pytest >= 8.0.0",
    "pytest-cov",
    "pytest-mock >= 3.14.0",
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions