VSCode:如何构建一个简单的python包与几个模块和测试,调试和检查?



在Python中构建一个简单的项目来使用Visual Studio Code进行开发时,我遇到了比我想承认的更多的麻烦。

我应该如何在我的文件系统结构一个项目,是一个简单的Python包与几个模块?就是一堆*.py文件。我的要求是:

  1. 我必须能够在vscode中调试它。
  2. 它有一堆单元测试使用pytest.
  3. 我可以从vscode选项卡中选择调试一个特定的测试,它必须在断点处停止。
  4. pylint不能显示任何误报。
  5. 测试文件必须在主模块文件的不同目录中。
  6. 我必须能够从控制台中运行所有测试。
  7. 该模块在虚拟环境中使用python标准库模块venv
  8. 执行。代码将使用类型提示

我可以使用另一个测试器,甚至另一个测试框架。

没什么特别的,但是我真的很难把它做好。我想知道:
  • 我应该如何组织我的子目录:一个包含主文件的文件夹和一个包含测试的兄弟文件夹?还是一个包含代码的子文件夹和一个包含测试的子文件夹?
  • 哪些目录必须有init. py文件?
  • 测试应该如何从模块导入文件?我应该使用相对导入吗?
  • 我应该创建一个pytest.ini文件吗?
  • 我应该创建.env文件吗?
  • 我的launch.json调试器文件配置在vscode的内容是什么?

通用目录结构:

  • app
    • __init__.py
    • yourappcode.py
  • tests(pytest查找此)
    • __init__.py
    • test_yourunittests.py
  • server.py,如果你有一个
  • .env
  • .coveragerc
  • README.md
  • Pipfile
  • .gitignore
  • pyproject.toml
  • .vscode(有用)
    • launch.json
    • settings.json

或者你可以做一个更好的。忽略我的结构,看看一些著名的python项目github页面。比如fastAPI, Flask, asgi, aiohttp这些都是我能想到的

也:

  • 我认为绝对进口比相对进口更容易处理,但我可能错了
  • vscode可以使用pytest。确保您有一个测试扩展。我很确定Vscode有一个内置的。您可以将其配置为pytest并指定您的测试目录。您还可以从命令行运行测试。如果你在根目录,只要运行' pytest '就会识别出你的测试目录,如果它是默认命名的。另外,我认为你实际的测试文件需要以前缀test_开头。
  • 。Json不需要有什么特别之处。当你点击调试面板中播放按钮旁边的设置按钮时。Vscode会问它是什么类型的应用。例如,如果它是一个flask应用,选择python,然后选择flask,它会自动生成一个设置文件,你可以根据自己的需要进行调整,以便让你的应用运行。例如,也许你想公开一个不同的端口或运行应用程序的命令是不同的
  • 在我看来,你只需要花一点时间配置vscode来满足你特定的python需求。例如,您可以以任何您想要的方式使用虚拟环境和linting。你只需要有一个设置。在repo .vscode文件夹中的. Json文件中指定您的设置。可以在线
  • 找到指定python虚拟环境和检测方法的配置。