daPython是一种解释性语言,它有一个非常好的好处,就是代码可以随调随改。
这意味着什么?意味着,我们编写一个代码,在代码中打个断点,就可以在当前baseline的基础上,做很多尝试。
在面对大型应用的时候,动不动运行个两三分钟的程序,光是跑到我们要运行的地方就要这么久。
所以,必然要掌握打断点的技巧。
对Python打断点的技巧,相对会容易很多,大家都会。
但是有些pytest,它的路径有问题。这必须要我们进去手动改py文件的路径,吃力又麻烦。
所以,我们首先介绍一下如何配置pytest的环境。
Pytest单case的调试_荒山之夜的博客-CSDN博客_pytest 单步调试
但是,有的时候,我们运行pytest的时候,会遇到环境变量的困扰。
比如,我们需要在PATH后面加一个查找路径。
同时,在增加查找路径后,我们能把现有的环境变量打印出来。
网上很少有这种教程。
因此,我们在此简单贴个代码。
核心就是用launch.json去调用tasks.json中的任务。
在tasks.json中实现,环境变量的添加,以及,环境变量的打印。
launch.json
- {
- // 使用 IntelliSense 了解相关属性。
- // 悬停以查看现有属性的描述。
- // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
- "version": "0.2.0",
- "configurations": [
- {
- "name": "Python: test_model_efficiendet_coco",
- "type": "python",
- "request": "launch",
- "module": "pytest",
- "args": ["-rA",
- "-s",
- "-m=compiler",
- "vgg16_imagenet_224x224x3_30_94G_138_36M/test_model_vgg16_imagenet_224x224x3_30_94G_138_36M.py"],
-
- "cwd": "/home/shengguowei/location_single_prefix_case_bug/npu_model_zoo/",
- "env": {"CUDA_VISIBLE_DEVICES":"", "DISABLE_TQDM":"True"},
- "envFile": "${workspaceFolder}/.env",
- "console": "integratedTerminal",
- "preLaunchTask":"Outputenviroment" ,
- "justMyCode": false,
- "stopOnEntry": false,
- }
- ],
- }
tasks.json
- {
- "version": "2.0.0",
- "tasks":[
- {
- "label":"Outputenviroment",
- "type": "shell",
- "command":"echo ${workspaceFolder};echo fake;echo ${PATH};export PATH=${PATH}:${NPU_root_path}/ncnn/build_x86_sim/tools/novauto/:${NPU_root_path}/ncnn/build_x86_sim/tools/onnx/"
- }
- ]
- }
其中亮点是:launch.json通过preLaunchTask的标签来寻找tasks.json中的标签。
task.json中的command,用来输出和加入环境变量。
module,则和code等冲突。命令可以像命令行一样直接写在args中。
至此,我们达成了直接运行pytest的效果。甚至可以自己加环境变量,可以查看环境变量是不是增加正确。