在Pycharm中达到任意程序状态后,如何测试任意代码?

在Pycharm中达到任意程序状态后,如何测试任意代码?,pycharm,Pycharm,tldr;我希望我能进入一个特定的程序状态,然后停止,然后继续编辑同一个文件,并使用这个过程不断地向文件添加代码。 细节: 我经常想做的是使用python控制台或在特定的程序状态下运行特定的代码段。然而,我不知道如何达到我的代码以我想要的方式运行所需的程序状态 通常我所做的是运行调试器到一个断点(这样我就可以进入我想要的程序状态)。然后我将使用求值表达式栏。然而,这似乎真的很低效,特别是因为求值表达式栏很难用于多行内容,而且它似乎更多地用于单个表达式,而不是测试您打算使用的实际代码。如果我可以

tldr;我希望我能进入一个特定的程序状态,然后停止,然后继续编辑同一个文件,并使用这个过程不断地向文件添加代码。


细节: 我经常想做的是使用python控制台或在特定的程序状态下运行特定的代码段。然而,我不知道如何达到我的代码以我想要的方式运行所需的程序状态

通常我所做的是运行调试器到一个断点(这样我就可以进入我想要的程序状态)。然后我将使用求值表达式栏。然而,这似乎真的很低效,特别是因为求值表达式栏很难用于多行内容,而且它似乎更多地用于单个表达式,而不是测试您打算使用的实际代码。如果我可以在运行一个不一定以线性方式(例如jupyter风格)组织的任意程序后执行、编辑和重新执行单元格,那将是理想的

我知道可以执行单元格(shift+enter或control+enter)和所选代码(option+shift+e)。然而,我似乎不知道如何正确地使用它们,以便我可以做我想做的事情(特别是进入程序状态以便测试我想要的代码)。所以我想做的是:

  • 获得我想要的特定程序状态
  • 那么

    a) 在该程序状态下在控制台或python控制台中运行代码 b) 在该程序状态下的单元格(或选项)中运行代码

    我该怎么做

    或者更确切地说:1)获得我想要的程序状态2)测试新代码(不仅仅是表达式)

    我发现的另一个问题是,似乎这可能需要将我的代码重组为类似jupyter的文件…希望我可以避免,因为重构很难,而且很多时候我使用的是其他地方的代码不是那样的结构


    编辑并进一步澄清 但我最感兴趣的是有以下工作流程:

  • 执行代码并在断点处停止
  • 然后在该断点(以及特定的程序状态)之后,理想地在当前文件中构建下一段代码
  • 对于步骤2,我希望使用类似于执行选择的内容。如果我能进入程序状态(比如使用断点),那么在断点后编写代码并执行它(例如,使用
    alt+shift+e
    )就太完美了。但是,请注意关键点,在断点之后执行的下一个代码是新代码,它还没有出现,我不知道它是什么,因为它取决于当前的程序状态。我知道在vs代码处于调试状态时添加新代码是行不通的。我刚检查过,它在pycharm中也不起作用

    我真的很喜欢用pycharm中的细胞做这件事。如果我可以进入程序状态(例如,使用断点),然后再创建新代码(比如使用python单元),然后继续运行代码并继续中断和构建。这可能是理想的

    最好的方法似乎是从调试程序控制台复制粘贴我编写的代码(不幸的是最终从控制台获得>>>),然后重新运行调试程序

    我希望我不必像pycharm单元格那样重新运行调试程序并编辑文件


    潜在解决方案:将粘贴程序状态复制到jupyter 或者,如果我可以“拖放程序状态”,那就可以了。我总是打开一个jupyter样式的脚本,然后“复制粘贴”上一次运行的程序状态,然后在另一个文件的新单元格中使用它


    交叉张贴:

    • pycharm论坛:
    • 库拉:
    • reddit:
    • 拖放程序状态:
  • 确保调试器配置已打开python控制台(如果您有另一个选项,则此选项可能不起作用,例如,由于
    print(“\a”)
    不起作用,我有了它

  • 然后,在断点处运行代码(确保调试器已打开python控制台)

  • 然后在断点下方编写代码并选择它,然后按
    shift+control+E
    。然后在调试器控制台中运行它


  • 这是让函数接受和返回(理想情况下是不可变的)的一个很好的参数状态,不依赖于变化的全局状态。然后,你只需要构造一个虚拟状态对象,并将其传递给你想要测试的函数。我曾参与过一些项目,其中代码的当前状态高度依赖于你当时所做的事情。我发现对我来说,最好的方法是在任何我想做的地方进行条件检查输入新代码或测试某些东西。从那里我要么转储变量,以便在其他地方使用“测试数据”,要么在编写新代码时调用单独的函数。重要的部分是初始条件检查,以捕获程序状态中的目标位置。@Rashid'Lee'Ibrahim我很好地运行我的调试器(或者别的什么)获取程序状态,然后将其转储到jupyter风格的笔记本上,然后编写我需要的代码。这将非常有效。也许你可以分享更多细节,你在评论中的意思?这听起来很有用,但我不知道如何做。@CharlieParker在我的例子中,我有很多数据来自几个API和一个DB。一些我只是需要一组具有特定参数的特定数据,所以我会运行代码直到创建数据对象,然后我会将数据从那里复制到一个临时文件中以用于测试数据。@CharlieParker其他时候我需要在已经运行的代码中。这是关于
    if语句
    。根据您如何知道何时需要将断点设置为运行,您可以在该点转移现有项目以调用“新函数”,此时您正在进行一个work in progre