Pycharm es el mejor IDE de python, claro también esto aplica a Intellij IDEA y su plugin de python, normalmente el debuggear en estos IDEs es muy sencillo y te da mucha informacion, pero en ciertos casos me he topado con errores, bueno simplemente no funciona el debug y luego de mucho buscar encontré la forma de arreglarlo, asi que veremos estos 2 casos y espero que esto les sirva.
Configuración del proyecto usando pyproject con poetry
Una de las mejores herramientas para manejar proyectos en python es poetry, no voy a entrar en mucho detalle en este tema, pero colocare un pyproject.toml
muy básico:
[tool.poetry]
name = "test"
version = "1.0.0"
description = "test"
authors = ["Hector Miuler Malpica Gallegos <miuler@gmail.com>"]
[tool.poetry.dependencies]
python = "^3.11"
[tool.poetry.group.test.dependencies]
pytest = "^7.3.2"
pytest-cov = "^4.1.0"
pytest-xdist = { version = "^3.3.1", extras = ["psutil"] }
[tool.pytest.ini_options]
addopts = "-n auto"
testpaths = ["tests"]
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
PyCharm , el debug y los errores
Ahora para ilustrar el problema, solo voy a poner un simple test.
import unittest
class MyTestCase(unittest.TestCase):
def test_something(self):
print("Miuler") # BREAKPOINT #
self.assertEqual(True, True)
def test_something():
print("Miuler") # BREAKPOINT #
assert True
if __name__ == '__main__':
unittest.main()
Si ejecuta el debug tal y como esta el pyproject, el debug de pycharm no se para en los breakpoints marcados, y esto se puede deber a 2 problemas.
pytest-cov
Si esta intentando correr un test y en la ejecucion tiene el argumento --cov=.
a algo similar, el debug no funcionara, o por lo menos no parará en ningún breakpoint que coloquen, por lo que simplemente debes de quitar cualquier referencia a --cov
, con esto ya funcionará.
pytest-xdist
Si tiene addopts = "-n auto"
en su pyproject.toml
, debe de quitarlo, esto se debe a que con esa configuración pytest intentara usar todos los cpus para correr ciertas tareas en paralelo, pero el debug no se lleva bien esta configuracion y los breakpoints dejan de funcionar.
Estas son los dos motivos por lo que pasa esto, algunos links de referencia:
https://stackoverflow.com/questions/40718760/unable-to-debug-in-pycharm-with-pytest
https://gist.github.com/Miuler/61926c5c7e8adc9f7d35f8e2171629d6