如何解决在Pycharm中达到任意程序状态后,如何测试任意代码?
tldr;我希望我可以进入特定的程序状态,然后暂停,然后继续编辑同一文件,并继续使用此过程迭代地向该文件中添加代码。
详细信息:
我通常想做的是使用python控制台或在特定程序状态下运行特定代码。但是,我不知道如何使代码以我想要的方式运行所需的程序状态。
通常,我过去通常将调试器运行到一个断点(这样我就可以进入所需的程序状态)。然后,我将使用评估表达栏。但是,这似乎效率很低,尤其是因为评估表达式栏很难用于多行内容,并且似乎意味着更多关于单个表达式,而不是测试您打算使用的实际代码。如果我可以在运行不一定以线性方式组织的任意程序(例如jupyter风格)之后执行,编辑并重新执行单元格,那将是理想的选择。
我知道可以执行单元格(shift + enter或control + enter)并执行选定的代码(option + shift + e)。但是,我似乎不知道如何正确使用它们,以便可以执行自己想要的操作(特别是进入程序状态以便测试所需的代码)。所以我想做的是:
- 进入我想要的特定程序状态
然后选择
a)在该程序状态下在控制台或python控制台中运行代码 b)在该程序状态下的单元格(或选择区域)中运行代码
我该怎么做?
或更准确地说:1)获得我想要的程序状态2)测试新代码(不仅仅是表达式)
我发现的另一个问题是,这似乎可能需要将我的代码重组为像文件一样的jupyter ...希望我可以避免这种情况,因为重构很困难,而且很多时候我正在使用未结构化的其他地方的代码这样...
进行进一步的澄清编辑
我最感兴趣的是以下工作流程:
- 执行代码并在断点处停止
- 然后在该断点(以及特定的程序状态)之后,理想地在当前文件中构建下一段代码。
对于步骤2,我将使用诸如execute select之类的东西。如果我可以进入程序状态(例如使用断点),则可以在断点之后编写代码并执行(例如,使用alt+shift+e
),这将是完美的。但是,请注意,关键点是我在断点之后执行的下一个代码是新代码,它尚不存在,我也不知道它是什么,因为它取决于当前程序状态。我知道在vs代码中处于调试状态时添加新代码是行不通的。我只是检查了一下,也无法在pycharm中使用。
我真的很喜欢用pycharm中的细胞来完成此操作。如果我可以进入程序状态(例如使用断点),请在那之后创建新代码(例如使用python单元格),然后继续运行代码并继续进行破坏和构建。那可能是理想的。
最好的方法似乎是从调试器控制台复制粘贴的代码(不幸的是最终从控制台获得>>>),然后重新运行调试器。
我希望我不必重新运行调试器并编辑文件,就像pycharm单元的工作方式一样。
潜在的解决方案:将粘贴程序状态复制到jupyter
或者如果我可以“拖放程序状态”就可以做到。我将始终打开jupyter样式的脚本,然后从上一次运行中“复制”粘贴程序状态,然后在其他文件的新单元格中使用它。
交叉发布:
- pycharm论坛:https://intellij-support.jetbrains.com/hc/en-us/community/posts/360009568699-How-do-I-test-arbitrary-code-after-reaching-an-arbitrary-program-state-
- 法定人数:https://www.quora.com/unanswered/How-do-I-test-arbitrary-code-after-reaching-an-arbitrary-program-state-in-PyCharm
- reddit:https://www.reddit.com/r/pycharm/comments/iibijp/how_do_i_test_arbitrary_code_after_reaching_an/
- 拖放程序状态:https://intellij-support.jetbrains.com/hc/en-us/community/posts/360009673520-how-does-one-drag-and-drop-a-program-state-after-a-break-point-
解决方法
-
请确保调试器配置已打开python控制台(如果您有其他选择,则该选项可能无法正常工作,例如,由于
print("\a")
无法正常工作,我有了它。 -
然后,在断点处运行代码(确保调试器已打开python控制台)
-
然后在断点下方编写代码并选择该断点,然后按
shift + control + E
。然后在调试器控制台中运行它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。