在Python中构建一个简单的项目来使用Visual Studio Code进行开发时,我遇到了比我想承认的更多的麻烦。
我应该如何在我的文件系统结构一个项目,是一个简单的Python包与几个模块?就是一堆*.py文件。我的要求是:
- 我必须能够在vscode中调试它。
- 它有一堆单元测试使用pytest.
- 我可以从vscode选项卡中选择调试一个特定的测试,它必须在断点处停止。
- pylint不能显示任何误报。 测试文件必须在主模块文件的不同目录中。
- 我必须能够从控制台中运行所有测试。
- 该模块在虚拟环境中使用python标准库模块venv 执行。代码将使用类型提示
我可以使用另一个测试器,甚至另一个测试框架。
没什么特别的,但是我真的很难把它做好。我想知道:- 我应该如何组织我的子目录:一个包含主文件的文件夹和一个包含测试的兄弟文件夹?还是一个包含代码的子文件夹和一个包含测试的子文件夹?
- 哪些目录必须有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虚拟环境和检测方法的配置。