Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

pytest hangs when skipping tests with fixtures #24547

Copy link
Copy link
Closed
@MtkN1

Description

@MtkN1
Issue body actions

Behaviour

As the title suggests, test execution hangs when using a fixture to skip tests in pytest. The circle icon keeps spinning indefinitely, and the test never completes.

Steps to reproduce:

  1. Create a fixture code that might be skipped under certain conditions.
  2. Create a test function code that uses the fixture.
  3. Run the target test function from the "Testing" panel.
  4. The test execution hangs. While it occasionally succeeds, repeated runs usually result in a hang.

Here's the minimal code to reproduce the issue:

import pytest


@pytest.fixture
def docker_client() -> object:
    try:
        # NOTE: Actually connect with the docker sdk
        raise Exception("Docker client not available")
    except Exception:
        pytest.skip("Docker client not available")

    return object()


def test_docker_client(docker_client):
    # Running the test in VS Code will hang.
    assert ...

You can find the same code in my reproduction repository. If you'd like, you can easily reproduce the issue by creating a codespace from here: https://github.com/MtkN1/vscode-pytest-skip-hang

Diagnostic data

Output for Python in the Output panel (ViewOutput, change the drop-down the upper-right of the Output panel to Python)

2024-12-05 06:09:07.496 [info] Experiment 'pythonRecommendTensorboardExt' is active
2024-12-05 06:09:07.496 [info] Experiment 'pythonTerminalEnvVarActivation' is active
2024-12-05 06:09:07.496 [info] Experiment 'pythonTestAdapter' is active
2024-12-05 06:09:07.496 [info] Native locator: Refresh started
2024-12-05 06:09:07.496 [info] Native locator: Refresh started
2024-12-05 06:09:07.539 [info] Conda environment manager found at: /opt/conda/bin/conda
2024-12-05 06:09:07.719 [info] > pyenv which python
2024-12-05 06:09:07.719 [info] cwd: .
2024-12-05 06:09:08.012 [info] Native locator: Refresh finished in 1803 ms
2024-12-05 06:09:08.015 [info] Python interpreter path: ~/.python/current/bin/python
2024-12-05 06:09:09.075 [warning] Shell integration may not be active, environment activated may be overridden by the shell.
2024-12-05 06:09:09.102 [info] Discover tests for workspace name: vscode-pytest-skip-hang - uri: /workspaces/vscode-pytest-skip-hang
2024-12-05 06:09:09.102 [info] Running discovery for pytest using the new test adapter.
2024-12-05 06:09:09.112 [info] All environment variables set for pytest discovery: {"DOCKER_BUILDKIT":"1","ENABLE_DYNAMIC_INSTALL":"true","LESSOPEN":"| /usr/bin/lesspipe %s","GITHUB_TOKEN":"ghu_kETMfIxtmoP6wHqJorJRm76fSaWkkM3lFmY5","GIT_COMMITTER_NAME":"GitHub","PYTHONIOENCODING":"UTF-8","GITHUB_CODESPACE_TOKEN":"AMHJ22AEGTXSROPXLYJRMT3HKHUENANCNFSM4AKYDNKQ","USER":"codespace","RVM_PATH":"/usr/local/rvm","NVS_ROOT":"/usr/local/nvs","HOSTNAME":"codespaces-464917","DOTNET_USE_POLLING_FILE_WATCHER":"true","CONDA_SCRIPT":"/opt/conda/etc/profile.d/conda.sh","PIPX_HOME":"/usr/local/py-utils","SHLVL":"1","GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN":"app.github.dev","HUGO_ROOT":"/home/codespace/.hugo","HOME":"/home/codespace","OLDPWD":"/vscode/bin/linux-x64/f1a4fb101478ce6ec82fe9627c43efbf9e98c813","ORYX_ENV_TYPE":"vsonline-present","NVM_BIN":"/usr/local/share/nvm/versions/node/v20.17.0/bin","CODESPACES":"true","DOTNET_RUNNING_IN_CONTAINER":"true","NVM_SYMLINK_CURRENT":"true","DYNAMIC_INSTALL_ROOT_DIR":"/opt","PIPX_BIN_DIR":"/usr/local/py-utils/bin","NVM_INC":"/usr/local/share/nvm/versions/node/v20.17.0/include/node","rvm_stored_umask":"0022","ORYX_DIR":"/usr/local/oryx","GRADLE_HOME":"/usr/local/sdkman/candidates/gradle/current","JUPYTERLAB_PATH":"/home/codespace/.local/bin","rvm_user_install_flag":"0","MAVEN_HOME":"/usr/local/sdkman/candidates/maven/current","GOROOT":"/usr/local/go","NODE_ROOT":"/home/codespace/nvm","GITHUB_GRAPHQL_URL":"https://api.github.com/graphql","GITHUB_USER":"MtkN1","NVM_DIR":"/usr/local/share/nvm","PYTHON_PATH":"/usr/local/python/current","DOTNET_SKIP_FIRST_TIME_EXPERIENCE":"1","ContainerVersion":"13","NVS_HOME":"/usr/local/nvs","GITHUB_API_URL":"https://api.github.com","rvm_bin_path":"/usr/local/rvm/bin","SDKMAN_CANDIDATES_API":"https://api.sdkman.io/2","_":"/usr/bin/cat","RUBY_VERSION":"ruby-3.3.4","PROMPT_DIRTRIM":"4","IRBRC":"/usr/local/rvm/rubies/ruby-3.3.4/.irbrc","CLOUDENV_ENVIRONMENT_ID":"08b2dd41-2e13-4799-af58-e15b9d981e58","DOTNET_ROOT":"/usr/share/dotnet","NVS_DIR":"/usr/local/nvs","PHP_ROOT":"/home/codespace/.php","JAVA_ROOT":"/home/codespace/java","VSCODE_AGENT_FOLDER":"/home/codespace/.vscode-remote","SDKMAN_CANDIDATES_DIR":"/usr/local/sdkman/candidates","HUGO_DIR":"/usr/local/hugo/bin","NPM_GLOBAL":"/home/codespace/.npm-global","SHELL_LOGGED_IN":"true","MY_RUBY_HOME":"/usr/local/rvm/rubies/ruby-3.3.4","LANG":"C.UTF-8","SDKMAN_DIR":"/usr/local/sdkman","RUBY_ROOT":"/home/codespace/.ruby","LS_COLORS":"","SDKMAN_PLATFORM":"linuxx64","GITHUB_REPOSITORY":"MtkN1/vscode-pytest-skip-hang","SHELL":"/bin/bash","GOPATH":"/go","rvm_prefix":"/usr/local","rvm_loaded_flag":"1","GEM_HOME":"/usr/local/rvm/gems/ruby-3.3.4","ORYX_PREFER_USER_INSTALLED_SDKS":"true","LESSCLOSE":"/usr/bin/lesspipe %s %s","ORYX_SDK_STORAGE_BASE_URL":"https://oryx-cdn.microsoft.io","CONDA_DIR":"/opt/conda","rvm_version":"1.29.12 (latest)","DEBIAN_FLAVOR":"focal-scm","GIT_COMMITTER_EMAIL":"noreply@github.com","GEM_PATH":"/usr/local/rvm/gems/ruby-3.3.4:/usr/local/rvm/gems/ruby-3.3.4@global","JAVA_HOME":"/usr/local/sdkman/candidates/java/current","NVS_USE_XZ":"1","INTERNAL_VSCS_TARGET_URL":"https://southeastasia.online.visualstudio.com","PWD":"/vscode/bin/linux-x64/f1a4fb101478ce6ec82fe9627c43efbf9e98c813","NVM_CD_FLAGS":"","GITHUB_SERVER_URL":"https://github.com","PHP_PATH":"/usr/local/php/current","PYTHON_ROOT":"/home/codespace/.python","RAILS_DEVELOPMENT_HOSTS":".githubpreview.dev,.preview.app.github.dev,.app.github.dev","NVS_OS":"linux","CODESPACE_NAME":"animated-meme-64q64j59j9r2r9x","RUBY_HOME":"/usr/local/rvm/rubies/default","MAVEN_ROOT":"/home/codespace/.maven","rvm_path":"/usr/local/rvm","NUGET_XMLDOC_MODE":"skip","VSCODE_CWD":"/vscode/bin/linux-x64/f1a4fb101478ce6ec82fe9627c43efbf9e98c813","VSCODE_NLS_CONFIG":"{\"userLocale\":\"en\",\"osLocale\":\"en\",\"resolvedLanguage\":\"en\",\"defaultMessagesFile\":\"/vscode/bin/linux-x64/f1a4fb101478ce6ec82fe9627c43efbf9e98c813/out/nls.messages.json\",\"locale\":\"en\",\"availableLanguages\":{}}","VSCODE_HANDLES_SIGPIPE":"true","VSCODE_ESM_ENTRYPOINT":"vs/workbench/api/node/extensionHostProcess","VSCODE_HANDLES_UNCAUGHT_ERRORS":"true","BROWSER":"/vscode/bin/linux-x64/f1a4fb101478ce6ec82fe9627c43efbf9e98c813/bin/helpers/browser.sh","ELECTRON_RUN_AS_NODE":"1","VSCODE_IPC_HOOK_CLI":"/tmp/vscode-ipc-b434babb-d6d2-41df-aec5-8cdfc5433a0a.sock","PATH":"/vscode/bin/linux-x64/f1a4fb101478ce6ec82fe9627c43efbf9e98c813/bin/remote-cli:/home/codespace/.local/bin:/home/codespace/.dotnet:/home/codespace/nvm/current/bin:/home/codespace/.php/current/bin:/home/codespace/.python/current/bin:/home/codespace/java/current/bin:/home/codespace/.ruby/current/bin:/home/codespace/.local/bin:/usr/local/python/current/bin:/usr/local/py-utils/bin:/usr/local/oryx:/usr/local/go/bin:/go/bin:/usr/local/sdkman/bin:/usr/local/sdkman/candidates/java/current/bin:/usr/local/sdkman/candidates/gradle/current/bin:/usr/local/sdkman/candidates/maven/current/bin:/usr/local/sdkman/candidates/ant/current/bin:/usr/local/rvm/gems/default/bin:/usr/local/rvm/gems/default@global/bin:/usr/local/rvm/rubies/default/bin:/usr/local/share/rbenv/bin:/usr/local/php/current/bin:/opt/conda/bin:/usr/local/nvs:/usr/local/share/nvm/current/bin:/usr/local/hugo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/share/dotnet:/home/codespace/.dotnet/tools:/usr/local/rvm/bin","PYTHONPATH":"/home/codespace/.vscode-remote/extensions/ms-python.python-2024.20.0-linux-x64/python_files","TEST_RUN_PIPE":"/tmp/python-test-discovery-545a8778dea8e958f3ae.sock"}
2024-12-05 06:09:09.556 [info] Shell integration status changed, can confirm it's working.
2024-12-05 06:09:09.566 [info] Starting Pylance language server.
2024-12-05 06:09:09.642 [info] > ~/.python/current/bin/python -m pytest -p vscode_pytest --collect-only tests
2024-12-05 06:09:09.643 [info] cwd: .
2024-12-05 06:09:12.112 [info] ============================= test session starts ==============================
platform linux -- Python 3.12.1, pytest-8.3.4, pluggy-1.5.0
rootdir: /workspaces/vscode-pytest-skip-hang
plugins: cov-6.0.0, anyio-4.6.0
collected 1 item

<Dir vscode-pytest-skip-hang>
  <Package tests>
    <Module test_skip.py>
      <Function test_hang>

========================== 1 test collected in 0.03s ===========================

2024-12-05 06:09:17.370 [info] Attempting to use temp directory for test ids file, file name: test-ids-d0b8ce21c9feea6a0b73.txt
2024-12-05 06:09:17.392 [info] All environment variables set for pytest execution: {"DOCKER_BUILDKIT":"1","ENABLE_DYNAMIC_INSTALL":"true","LESSOPEN":"| /usr/bin/lesspipe %s","GITHUB_TOKEN":"ghu_kETMfIxtmoP6wHqJorJRm76fSaWkkM3lFmY5","GIT_COMMITTER_NAME":"GitHub","PYTHONIOENCODING":"UTF-8","GITHUB_CODESPACE_TOKEN":"AMHJ22AEGTXSROPXLYJRMT3HKHUENANCNFSM4AKYDNKQ","USER":"codespace","RVM_PATH":"/usr/local/rvm","NVS_ROOT":"/usr/local/nvs","HOSTNAME":"codespaces-464917","DOTNET_USE_POLLING_FILE_WATCHER":"true","CONDA_SCRIPT":"/opt/conda/etc/profile.d/conda.sh","PIPX_HOME":"/usr/local/py-utils","SHLVL":"1","GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN":"app.github.dev","HUGO_ROOT":"/home/codespace/.hugo","HOME":"/home/codespace","OLDPWD":"/vscode/bin/linux-x64/f1a4fb101478ce6ec82fe9627c43efbf9e98c813","ORYX_ENV_TYPE":"vsonline-present","NVM_BIN":"/usr/local/share/nvm/versions/node/v20.17.0/bin","CODESPACES":"true","DOTNET_RUNNING_IN_CONTAINER":"true","NVM_SYMLINK_CURRENT":"true","DYNAMIC_INSTALL_ROOT_DIR":"/opt","PIPX_BIN_DIR":"/usr/local/py-utils/bin","NVM_INC":"/usr/local/share/nvm/versions/node/v20.17.0/include/node","rvm_stored_umask":"0022","ORYX_DIR":"/usr/local/oryx","GRADLE_HOME":"/usr/local/sdkman/candidates/gradle/current","JUPYTERLAB_PATH":"/home/codespace/.local/bin","rvm_user_install_flag":"0","MAVEN_HOME":"/usr/local/sdkman/candidates/maven/current","GOROOT":"/usr/local/go","NODE_ROOT":"/home/codespace/nvm","GITHUB_GRAPHQL_URL":"https://api.github.com/graphql","GITHUB_USER":"MtkN1","NVM_DIR":"/usr/local/share/nvm","PYTHON_PATH":"/usr/local/python/current","DOTNET_SKIP_FIRST_TIME_EXPERIENCE":"1","ContainerVersion":"13","NVS_HOME":"/usr/local/nvs","GITHUB_API_URL":"https://api.github.com","rvm_bin_path":"/usr/local/rvm/bin","SDKMAN_CANDIDATES_API":"https://api.sdkman.io/2","_":"/usr/bin/cat","RUBY_VERSION":"ruby-3.3.4","PROMPT_DIRTRIM":"4","IRBRC":"/usr/local/rvm/rubies/ruby-3.3.4/.irbrc","CLOUDENV_ENVIRONMENT_ID":"08b2dd41-2e13-4799-af58-e15b9d981e58","DOTNET_ROOT":"/usr/share/dotnet","NVS_DIR":"/usr/local/nvs","PHP_ROOT":"/home/codespace/.php","JAVA_ROOT":"/home/codespace/java","VSCODE_AGENT_FOLDER":"/home/codespace/.vscode-remote","SDKMAN_CANDIDATES_DIR":"/usr/local/sdkman/candidates","HUGO_DIR":"/usr/local/hugo/bin","NPM_GLOBAL":"/home/codespace/.npm-global","SHELL_LOGGED_IN":"true","MY_RUBY_HOME":"/usr/local/rvm/rubies/ruby-3.3.4","LANG":"C.UTF-8","SDKMAN_DIR":"/usr/local/sdkman","RUBY_ROOT":"/home/codespace/.ruby","LS_COLORS":"","SDKMAN_PLATFORM":"linuxx64","GITHUB_REPOSITORY":"MtkN1/vscode-pytest-skip-hang","SHELL":"/bin/bash","GOPATH":"/go","rvm_prefix":"/usr/local","rvm_loaded_flag":"1","GEM_HOME":"/usr/local/rvm/gems/ruby-3.3.4","ORYX_PREFER_USER_INSTALLED_SDKS":"true","LESSCLOSE":"/usr/bin/lesspipe %s %s","ORYX_SDK_STORAGE_BASE_URL":"https://oryx-cdn.microsoft.io","CONDA_DIR":"/opt/conda","rvm_version":"1.29.12 (latest)","DEBIAN_FLAVOR":"focal-scm","GIT_COMMITTER_EMAIL":"noreply@github.com","GEM_PATH":"/usr/local/rvm/gems/ruby-3.3.4:/usr/local/rvm/gems/ruby-3.3.4@global","JAVA_HOME":"/usr/local/sdkman/candidates/java/current","NVS_USE_XZ":"1","INTERNAL_VSCS_TARGET_URL":"https://southeastasia.online.visualstudio.com","PWD":"/vscode/bin/linux-x64/f1a4fb101478ce6ec82fe9627c43efbf9e98c813","NVM_CD_FLAGS":"","GITHUB_SERVER_URL":"https://github.com","PHP_PATH":"/usr/local/php/current","PYTHON_ROOT":"/home/codespace/.python","RAILS_DEVELOPMENT_HOSTS":".githubpreview.dev,.preview.app.github.dev,.app.github.dev","NVS_OS":"linux","CODESPACE_NAME":"animated-meme-64q64j59j9r2r9x","RUBY_HOME":"/usr/local/rvm/rubies/default","MAVEN_ROOT":"/home/codespace/.maven","rvm_path":"/usr/local/rvm","NUGET_XMLDOC_MODE":"skip","VSCODE_CWD":"/vscode/bin/linux-x64/f1a4fb101478ce6ec82fe9627c43efbf9e98c813","VSCODE_NLS_CONFIG":"{\"userLocale\":\"en\",\"osLocale\":\"en\",\"resolvedLanguage\":\"en\",\"defaultMessagesFile\":\"/vscode/bin/linux-x64/f1a4fb101478ce6ec82fe9627c43efbf9e98c813/out/nls.messages.json\",\"locale\":\"en\",\"availableLanguages\":{}}","VSCODE_HANDLES_SIGPIPE":"true","VSCODE_ESM_ENTRYPOINT":"vs/workbench/api/node/extensionHostProcess","VSCODE_HANDLES_UNCAUGHT_ERRORS":"true","BROWSER":"/vscode/bin/linux-x64/f1a4fb101478ce6ec82fe9627c43efbf9e98c813/bin/helpers/browser.sh","ELECTRON_RUN_AS_NODE":"1","VSCODE_IPC_HOOK_CLI":"/tmp/vscode-ipc-b434babb-d6d2-41df-aec5-8cdfc5433a0a.sock","PATH":"/vscode/bin/linux-x64/f1a4fb101478ce6ec82fe9627c43efbf9e98c813/bin/remote-cli:/home/codespace/.local/bin:/home/codespace/.dotnet:/home/codespace/nvm/current/bin:/home/codespace/.php/current/bin:/home/codespace/.python/current/bin:/home/codespace/java/current/bin:/home/codespace/.ruby/current/bin:/home/codespace/.local/bin:/usr/local/python/current/bin:/usr/local/py-utils/bin:/usr/local/oryx:/usr/local/go/bin:/go/bin:/usr/local/sdkman/bin:/usr/local/sdkman/candidates/java/current/bin:/usr/local/sdkman/candidates/gradle/current/bin:/usr/local/sdkman/candidates/maven/current/bin:/usr/local/sdkman/candidates/ant/current/bin:/usr/local/rvm/gems/default/bin:/usr/local/rvm/gems/default@global/bin:/usr/local/rvm/rubies/default/bin:/usr/local/share/rbenv/bin:/usr/local/php/current/bin:/opt/conda/bin:/usr/local/nvs:/usr/local/share/nvm/current/bin:/usr/local/hugo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/share/dotnet:/home/codespace/.dotnet/tools:/usr/local/rvm/bin","PYTHONPATH":"/home/codespace/.vscode-remote/extensions/ms-python.python-2024.20.0-linux-x64/python_files","TEST_RUN_PIPE":"/tmp/python-test-results-e8e4890b62ac3aff165e.sock","RUN_TEST_IDS_PIPE":"/tmp/test-ids-d0b8ce21c9feea6a0b73.txt"}
2024-12-05 06:09:17.393 [info] Running pytest with arguments: /home/codespace/.vscode-remote/extensions/ms-python.python-2024.20.0-linux-x64/python_files/vscode_pytest/run_pytest_script.py --rootdir=/workspaces/vscode-pytest-skip-hang for workspace /workspaces/vscode-pytest-skip-hang 

2024-12-05 06:09:17.393 [info] > ~/.python/current/bin/python ~/.vscode-remote/extensions/ms-python.python-2024.20.0-linux-x64/python_files/vscode_pytest/run_pytest_script.py --rootdir=.
2024-12-05 06:09:17.393 [info] cwd: .

Metadata

Metadata

Assignees

Labels

area-testinginfo-neededIssue requires more information from posterIssue requires more information from postertriage-neededNeeds assignment to the proper sub-teamNeeds assignment to the proper sub-team

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions

    Morty Proxy This is a proxified and sanitized view of the page, visit original site.