小编Oli*_*ung的帖子

在 Visual Studio Code Debugger 中 Pytesting Doctests

假设我有以下代码foo.py

def start():
    """
    >>> start()
    Hello world
    """
    test = 10
    print('Hello world')
Run Code Online (Sandbox Code Playgroud)

通常,我会通过pytest foo.py --doctest-modules -v在终端中运行来运行 doctest 。相反,我希望能够通过 Visual Studio Code 的内置调试器对其进行测试,以跟踪变量和调用堆栈。

我的项目中有以下配置launch.json

"name": "PyTest",
"type": "python",
"request": "launch",
"stopOnEntry": false,
"pythonPath": "${config:python.pythonPath}",
"module": "pytest",
"args": [
    "${file}",
    "--doctest-modules",
    "-v"
],
"cwd": "${workspaceRoot}",
"env": {},
"envFile": "${workspaceRoot}/.env",
"debugOptions": [
    "RedirectOutput"
]
Run Code Online (Sandbox Code Playgroud)

但是,当我打开文件并在 VSCode 调试器中运行 PyTest 调试配置时,doctests 仅在内置终端中运行 - 调试器面板中没有显示任何内容。我应该如何配置调试器才能使用它的变量和调用堆栈?

python doctest docstring pytest visual-studio-code

8
推荐指数
1
解决办法
2040
查看次数

Python - 调用子模块时的相对文件位置

在Python中,我试图从"最后"函数(缺少更好的单词)所在的目录中访问文件.

例如,假设我有以下文件:

C:/
    foo.py
    package/
        helper.py
        text.md
Run Code Online (Sandbox Code Playgroud)

foo.py有:

from package import helper

helper.edit_file("text.md")
Run Code Online (Sandbox Code Playgroud)

helper.py有:

from os.path import abspath

def edit_file(file_location):
    with open(abspath(file_location), "w") as file:
        file.write("This file has been written to.")
Run Code Online (Sandbox Code Playgroud)

而text.md只是一个空文本文件.

当我直接edit_file("text.md")从helper.py 运行时,它正确地写入package/text.md.但是,当我运行foo.py时,它不会写入package/text.md,而是在与foo.py相同的目录级别创建一个新的text.md.我假设发生这种情况是因为它从foo.py所在的位置开始采用绝对路径.

是否有可能只从helper.py获取绝对路径,这样它总是写入package/text.md,无论原始调用在edit_file(file_location)哪里?

python relative-path

5
推荐指数
1
解决办法
67
查看次数