Quero começar a escrever testes de unidade para o meu código Python, e a estrutura py.test parece uma aposta melhor do que a mais compacta do Python . Então, adicionei um diretório "tests" ao meu projeto e adicionei test_sample.py . Agora eu quero configurar o PyCharm para executar todos os testes no meu diretório "tests".
O PyCharm supostamente suporta py.test em seu executor de testes. Você deveria ser capaz de criar uma configuração de execução / depuração para executar seus testes, e o PyCharm supostamente possui uma caixa de diálogo "criar configuração" especificamente para o py.test . Mas essa é a extensão completa da documentação deles sobre o assunto, e não consigo encontrar essa suposta caixa de diálogo em nenhum lugar.
Se eu botão direito do mouse o diretório na janela ferramenta do Projeto, estou suposto ver um "Criar <nome>" item de menu, mas o único item de menu começando com "Criar" é "Criar Configuração de execução". Ok, talvez a documentação esteja incorreta e "Criar configuração de execução" parece promissor. Infelizmente, os dois únicos itens em seu submenu são "Unittests in C: \ mypath ..." e "Doctests in C: \ mypath ...", nenhum dos quais se aplica - não estou usando o unittest nem o doctest. Não há item de menu para py.test.
Se eu abrir meu test_sample.py e clicar com o botão direito na janela do editor, recebo os itens de menu prometidos "Create <name>": há "Create 'Unittests in test_sa ...'...", seguido por "Run 'Unittests em test_sa ...' "e" Depurando 'Unittests em test_sa ...' ". Então, novamente, é tudo específico para a estrutura mais unida; nada para py.test.
Se eu tentar os itens de menu que dizem "mais unittest", recebo uma caixa de diálogo com as opções para "Name", "Type", uma caixa de grupo "Tests" com "Folder" e "Pattern" e "Pattern" e "Script" e "Class "e" Função "etc. Isso soa exatamente como o que está documentado como caixa de diálogo para adicionar uma configuração para o Teste de Unidade Python , e não como as opções" Nome "e" Teste para executar "e" Palavras-chave "que devem aparecer na configuração da caixa de diálogo py.test . Não há nada dentro da caixa de diálogo para alternar qual estrutura de teste estou adicionando.
Estou usando o PyCharm 1.5.2 no Windows com Python 3.1.3 e pytest 2.0.3. Posso executar py.test
com êxito meus testes na linha de comando, portanto, não é algo simples como o pytest não sendo instalado corretamente.
Como faço para configurar o PyCharm para executar meus testes py.test?
File | Settings | Tools | Python Integrated Tools
só está disponível nas configurações do projeto, em vez das configurações padrão no PyCharm 5.PyCharm 2017.3
Preference -> Tools -> Python integrated Tools
- Escolhapy.test
comoDefault test runner
.Preference -> Languages&Frameworks -> Django
- Ative o tick onDo not use Django Test runner
Run/Debug configuration
, caso contrário, os testes serão executados com essas configurações mais antigas.Run/Debug Configuration -> Defaults -> Python tests -> py.test -> Additional Arguments
fonte
New => Python File
, oKind:
menu suspenso oferece apenas: arquivo Python, teste de unidade, stub de Python, e não Pytest. Procurei em todos os locais mencionados nos tópicos acima. o que estou perdendo?Eu acho que você precisa usar o item Executar / Depurar Configuração na barra de ferramentas. Clique nele e em 'Editar configurações' (ou use o item de menu Executar-> Editar configurações). Na seção 'Padrões' no painel esquerdo, há um item 'py.test' que eu acho que é o que você deseja.
Também descobri que o manual não correspondia à interface do usuário para isso. Espero ter entendido o problema corretamente e isso ajude.
fonte
Target
para serScript ath
e aponte para a raiz dos meus testes pastaAqui está como eu fiz funcionar com pytest
3.7.2
(instalado via pip) e pycharms2017.3
:edit configurations
py.test
target
=python
e o campo sem nome abaixo paratests
. Parece que este é o nome da sua pasta de teste. Não tenho muita certeza. Também recomendo o-s
argumento para que, se você depurar seus testes, o console se comportará corretamente. Sem o argumento, o pytest captura a saída e torna o console de depuração com erros.my_project/tests
).foobar_test.py
arquivo: (nenhuma importação é necessária):fonte
Está mal documentado para ter certeza. Depois de adicionar uma nova configuração a partir dos padrões, você estará executando o script "/ Applications / PyCharm CE.app/Contents/helpers/pycharm/pytestrunner.py". Não está documentado e tem suas próprias idéias de argumentos de linha de comando.
Você pode:
Estranhamente, você achará difícil encontrar qualquer discussão, pois o JetBrains faz um bom trabalho ao bombardear os algoritmos do Google com suas próprias páginas.
fonte
encontre esse tópico quando eu acertei a mesma pergunta e encontrei a versão do pycharm da solução: 2017.1.2, vá para "Preferências" -> "Ferramentas" -> "Ferramentas Integradas do Python" e defina o executor de teste padrão no painel do lado direito como py.test resolver meu problema
fonte
No pycharm 2019.2, você pode simplesmente fazer isso para executar todos os testes:
Para uma integração mais alta do pytest no pycharm, consulte https://www.jetbrains.com/help/pycharm/pytest.html
fonte
Estou usando 2018.2
Executo -> Editar configurações ... Em seguida, clique no + no canto superior esquerdo da caixa de diálogo modal. Selecione "testes de python" -> py.test. Em seguida, nomeie-o como "Todos os testes com py.test"
Seleciono Destino: nome do módulo e coloco no módulo onde estão meus testes (ou seja, 'testes' para mim) ou no módulo em que todo o meu código está se meus testes estiverem misturados com o meu código. Isso estava me enganando.
Eu defino o intérprete Python.
Defino o diretório de trabalho como o diretório do projeto.
fonte
Com uma configuração python Conda especial que incluía a instalação do pip para py.test mais o uso do add-in Specs (opção --spec) (para Rspec como uma linguagem de resumo de teste agradável), eu precisava fazer;
1. Edite o py.test padrão para incluir a opção = --spec, o que significa usar o plugin: https://github.com/pchomik/pytest-spec
2.Crie uma nova configuração de teste usando py.test. Altere seu interpretador python para usar ~ / anaconda / envs / sua escolha de intérpretes, por exemplo, py27 para meus nomes.
3. Exclua a configuração de teste 'unittests'.
Agora, a configuração de teste padrão é py.test com minhas adoráveis saídas no estilo Rspec. Eu amo isso! Obrigado a todos!
O documento do ps Jetbrains sobre configurações de execução / depuração está aqui: https://www.jetbrains.com/help/pycharm/2016.1/run-debug-configuration-py-test.html?search=py.test
fonte
Com 2018.3, parece detectar automaticamente que estou usando o pytest, o que é bom, mas ainda não permite a execução no nível superior do projeto. Eu tive que executar
pytest
para cadatests
diretório individualmente.No entanto, descobri que podia escolher uma das configurações e editá-la manualmente para executar na raiz do projeto e que isso funcionou. Preciso escolhê-lo manualmente no menu suspenso Configurações - não consigo clicar com o botão direito do mouse na pasta raiz no painel Projeto. Mas pelo menos me permite executar todos os testes de uma só vez.
fonte
Habilite o Pytest para seu projeto
fonte