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的效果。甚至可以自己加环境变量,可以查看环境变量是不是增加正确。