Se o Test Explorer do Python no VS Code não encontrar testes, relatar erros de importação ou parecer buscar na pasta errada no macOS, verifique primeiro o diretório de trabalho de testes do Python e os argumentos do framework. Defina python.testing.cwd para o diretório esperado pelo seu comando de teste, atualize a descoberta e inspecione o log de saída do Python. Para o unittest, verifique também o argumento separado -s de diretório inicial; alterar o cwd não substitui essa configuração.

Confirme qual diretório o VS Code está usando

Abra o Test Explorer e execute Test: Refresh Tests a partir da Command Palette (⇧⌘P). Se a descoberta falhar, abra View > Output, escolha Python no menu de canais de saída e leia o registro de descoberta mais recente. A extensão do Python envia erros de descoberta para esse log, o que pode ajudar a distinguir um problema de caminho de um framework ausente ou erro de sintaxe. O VS Code documenta essas etapas de descoberta e registro em log.

Verifique qual pasta está aberta na janela do VS Code. Em um workspace de pasta única, o workspace geralmente é a raiz do projeto. Se você abriu a pasta pai de um repositório ou um workspace com múltiplas raízes (multi-root), os caminhos relativos podem ser resolvidos a partir de uma raiz diferente da que você presumiu. O diretório atual do terminal não é suficiente para determinar o diretório que a extensão utilizou; verifique a saída da descoberta e as configurações do workspace. Em um workspace multi-root, o VS Code permite configurações específicas por pasta, e ${workspaceFolder} refere-se à pasta associada à configuração. O guia de workspaces do VS Code explica pastas multi-root, e sua referência de variáveis aborda caminhos com escopo de pasta.

Defina o diretório de trabalho de testes do Python

Por exemplo, se você abriu a raiz do repositório, mas o comando de teste deve ser executado a partir da subpasta backend, abra as configurações do workspace no Mac com ⇧⌘P e selecione Preferences: Open Workspace Settings (JSON). Adicione ou mescle esta chave no objeto JSON existente:

{
  "python.testing.cwd": "${workspaceFolder}/backend"
}

Use o diretório real do seu projeto. Se os testes devem ser executados na raiz do workspace, você pode omitir essa configuração ou defini-la como ${workspaceFolder}. Evite um valor relativo simples como backend se você não tiver certeza de qual raiz ele é relativo; a variável explícita do workspace deixa a base pretendida mais clara. As configurações de workspace sobrepõem as configurações de usuário, portanto inspecione ambos os escopos se a alteração parecer ineficaz. O VS Code armazena as configurações de workspaces de pasta única em .vscode/settings.json; use a guia Workspace no editor de Settings para revisar o valor ativo. As configurações de workspace e a precedência são descritas na documentação de configurações do VS Code.

A configuração cwd da extensão do Python é opcional. Sua documentação afirma que defini-la também ajusta o --rootdir do pytest; rootdir é a configuração de raiz de projeto do pytest, portanto não a trate como intercambiável com o argumento de busca de testes de qualquer outro framework. A referência de configurações de teste do Python identifica esse comportamento do pytest.

Verifique os argumentos de descoberta específicos do framework

Para o pytest, revise python.testing.pytestArgs procurando por um caminho que aponte para um local inesperado. Um caminho como tests informa ao pytest o que coletar, enquanto python.testing.cwd define o contexto do diretório de trabalho. Mantenha apenas os argumentos necessários para o seu projeto e faça com que o caminho seja consistente com esse contexto. Após editar, execute Test: Refresh Tests novamente. A extensão descobre arquivos do pytest que correspondam às suas convenções na pasta atual e subpastas; a descoberta ainda pode falhar por motivos não relacionados ao cwd, incluindo uma instalação inacessível do pytest ou erros nos arquivos de teste. O guia oficial de testes lista o comportamento de descoberta e os relatórios de falhas comuns.

Para o unittest, inspecione python.testing.unittestArgs separadamente. Seus argumentos padrão incluem -s ., onde -s seleciona o diretório inicial. Se os testes ficam sob backend/tests e o cwd é a raiz do repositório, configure o diretório inicial de acordo, por exemplo:

{
  "python.testing.cwd": "${workspaceFolder}",
  "python.testing.unittestEnabled": true,
  "python.testing.pytestEnabled": false,
  "python.testing.unittestArgs": ["-v", "-s", "backend/tests", "-p", "*test*.py"]
}

Este é um exemplo para um projeto que usa unittest; não o copie sem alterações se o seu framework ou a nomenclatura dos arquivos forem diferentes. O unittest também exige que os arquivos de teste descobertos sejam módulos ou pacotes importáveis. Se o log mostrar erros de importação em uma subpasta de testes, verifique a estrutura do pacote; o VS Code observa que um arquivo __init__.py pode tornar essas pastas importáveis. O guia oficial descreve as opções -s e -p do unittest.

Atualize e isole as falhas restantes

Após alterar as configurações, execute Test: Refresh Tests novamente. Se o VS Code ainda usar um ambiente inesperado, execute Python: Select Interpreter e escolha o ambiente que possui seu framework de teste instalado; o interpretador selecionado é usado para os recursos do Python, incluindo testes. O guia de ambientes Python do VS Code explica a seleção de interpretador.

Se a saída ainda mostrar o caminho errado, compare o diretório de trabalho registrado no log com a raiz do workspace e os argumentos de teste configurados. Se o caminho estiver correto, mas a descoberta falhar, investigue o erro real: verifique a instalação do framework, erros de importação, erros de sintaxe e padrões de nomes de arquivos de teste. Um ajuste no cwd não pode corrigir esses problemas independentes. Se um projeto configurado corretamente ainda registrar um caminho inconsistente no log ou ignorar a configuração, capture a saída do Python e as configurações relevantes ao relatar o problema; não há um comando universal do VS Code que force todos os frameworks de teste a usar um diretório diferente.

Fontes