# Help ## Correr os testes Usamos o [pytest][pytest: Getting Started Guide] como executor de testes do nosso site. Vais precisar de instalar o `pytest` na tua máquina de desenvolvimento se quiseres correr os testes do percurso Python localmente. Também vais precisar de instalar os seguintes plugins do `pytest`: - [pytest-cache][pytest-cache] - [pytest-subtests][pytest-subtests] Encontras informação mais detalhada no [guia de testes de Python][Python track tests page] do nosso site. ### Correr os testes Para correres os testes incluídos, navega até à pasta onde o exercício está guardado usando o `cd` no teu terminal (_substitui `` abaixo pelo teu caminho_). Os ficheiros de teste terminam habitualmente em `_test.py` e são os mesmos testes que correm no site quando uma solução é submetida. Linux/MacOS ```bash $ cd ``` Windows ```powershell PS C:\Users\foobar> cd ```
De seguida, corre o comando `pytest` no teu terminal, substituindo `` pelo nome do ficheiro de teste: Linux/MacOS ```bash $ python3 -m pytest -o markers=task ==================== 7 passed in 0.08s ==================== ``` Windows ```powershell PS C:\Users\foobar> py -m pytest -o markers=task ==================== 7 passed in 0.08s ==================== ``` ### Opções comuns - `-o` : substitui o `pytest.ini` predefinido (_podes usar esta opção para evitar avisos de marcadores_) - `-v` : ativa a saída detalhada. - `-x` : para de correr os testes na primeira falha. - `--ff` : corre as falhas do teste anterior antes de correr os outros casos de teste. Para opções adicionais, usa `python3 -m pytest -h` ou `py -m pytest -h`. ### Corrigir avisos Se não usares `pytest -o markers=task` ao invocar o `pytest`, podes receber um `PytestUnknownMarkWarning` nos testes que usam a nossa nova sintaxe: ```bash PytestUnknownMarkWarning: Unknown pytest.mark.task - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/mark.html ``` Para evitares escrever `pytest -o markers=task` em todos os testes que corres, podes usar um ficheiro de configuração `pytest.ini`. Criámos um que podes descarregar a partir do nível de topo do diretório do percurso Python: [pytest.ini][pytest.ini]. Também podes criar o teu próprio ficheiro `pytest.ini` com o seguinte conteúdo: ```ini [pytest] markers = task: A concept exercise task. ``` Colocar o ficheiro `pytest.ini` no diretório _root_ ou _working_ dos teus exercícios do percurso Python regista os marcadores e faz parar os avisos. Encontras mais informação sobre os marcadores do pytest na documentação do `pytest` sobre [marcar funções de teste][pytest: marking test functions with attributes] e na documentação do `pytest` sobre [trabalhar com marcadores personalizados][pytest: working with custom markers]. Encontras informação sobre como personalizar as configurações do pytest na documentação do `pytest` sobre [formatos de ficheiros de configuração][pytest: configuration file formats]. ### Estender o teu IDE ou editor de código Muitos IDEs e editores de código têm suporte integrado para usar o `pytest` e outras ferramentas de qualidade de código. Podes encontrar algumas opções da comunidade na nossa [página de ferramentas do percurso Python][Python track tools page]. [Pytest: Getting Started Guide]: https://docs.pytest.org/en/latest/getting-started.html [Python track tools page]: https://exercism.org/docs/tracks/python/tools [Python track tests page]: https://exercism.org/docs/tracks/python/tests [pytest-cache]:http://pythonhosted.org/pytest-cache/ [pytest-subtests]:https://github.com/pytest-dev/pytest-subtests [pytest.ini]: https://github.com/exercism/python/blob/main/pytest.ini [pytest: configuration file formats]: https://docs.pytest.org/en/6.2.x/customize.html#configuration-file-formats [pytest: marking test functions with attributes]: https://docs.pytest.org/en/6.2.x/mark.html#raising-errors-on-unknown-marks [pytest: working with custom markers]: https://docs.pytest.org/en/6.2.x/example/markers.html#working-with-custom-markers ## Submeter a tua solução Podes submeter a tua solução com o comando `exercism submit protein_translation.py`. Este comando envia a tua solução para o site do Exercism e imprime o URL da página da solução. É possível submeter uma solução incompleta, o que te permite: - Ver como outras pessoas resolveram o exercício - Pedir ajuda a um mentor ## Precisas de ajuda? Se quiseres ajuda para resolver o exercício, consulta as seguintes páginas: - A [documentação do percurso Python](https://exercism.org/docs/tracks/python) - A [categoria de programação do percurso Python no fórum](https://forum.exercism.org/c/programming/python) - A [categoria de programação do Exercism no fórum](https://forum.exercism.org/c/programming/5) - As [Perguntas Frequentes](https://exercism.org/docs/using/faqs) Se esses recursos não forem suficientes, podes submeter a tua solução (incompleta) para pedir mentoria. Abaixo encontras alguns recursos para obter ajuda, caso tenhas problemas: - [A PSF](https://www.python.org) aloja as transferências do Python, a documentação e recursos da comunidade. - Os [Fóruns da Comunidade Python](https://discuss.python.org/) servem para obter ajuda, discutir PEPs, falar com os principais contribuidores do Python e muito mais. - [A Comunidade do Exercism no Discord](https://exercism.org/r/discord) - [Os Fóruns de Discussão da Comunidade do Exercism](https://forum.exercsim.org) - A [Comunidade Python no Discord](https://pythondiscord.com/) é uma comunidade muito prestável e ativa. - O [/r/learnpython/](https://www.reddit.com/r/learnpython/) é um subreddit pensado para quem está a aprender Python. - O [#python no Libera.chat](https://www.python.org/community/irc/) é o sítio onde os programadores responsáveis pela linguagem se juntam e põem o trabalho em dia. - Os [Fóruns da Comunidade Free Code Camp](https://forum.freecodecamp.org/) - O [Pythontutor](http://pythontutor.com/) para percorrer pequenos excertos de código visualmente. Além disso, o [StackOverflow](http://stackoverflow.com/questions/tagged/python) é um bom sítio para procurar o teu problema ou a tua dúvida e ver se já foi respondida. Se não foi, podes sempre [perguntar](https://stackoverflow.com/help/how-to-ask) ou [responder](https://stackoverflow.com/help/how-to-answer) à pergunta de outra pessoa.