如何使用带制表符完成的python调试器运行pytest? 背景
我已经用ipythonimport-embed的纯如何使用带制表符完成的python调试器运行pytest? 背景,python,debugging,pytest,pdb,ipdb,Python,Debugging,Pytest,Pdb,Ipdb,我已经用ipythonimport-embed的纯调试了我的python脚本约2年;embed(),它一直工作得很好。我只需将命令放在我想要检查的行上,当运行脚本时,我将拥有完整的IPython shell,具有检查变量、定义函数等功能。除此之外,IPython shell还提供了变量名选项卡完成功能 -> x = 1 + some_variable (Pdb) so[<tab_here_produces_tab>] -> x = 1 + some_variable (
调试了我的python脚本约2年;embed()
,它一直工作得很好。我只需将命令放在我想要检查的行上,当运行脚本时,我将拥有完整的IPython shell,具有检查变量、定义函数等功能。除此之外,IPython shell还提供了变量名选项卡完成功能
-> x = 1 + some_variable
(Pdb) so[<tab_here_produces_tab>]
-> x = 1 + some_variable
(Pdb++) so[<tab_here_produces_tab>]
103
104 def test_me(some_variable):
--> 105 x = 1 + some_variable
106 return x
107
ipdb> so[<tab_here_produces_tab>]
现在,不再总是使用ipythonimport-embed中的定义“暂停线”;embed()
,我希望我的python脚本在运行测试时遇到异常时暂停执行
问题:
如何以这样的方式运行pytest
- 视窗10
- Python 3.6
pdbpp
)
这将在运行到错误时打开基本shell。但它没有标签完成
-> x = 1 + some_variable
(Pdb) so[<tab_here_produces_tab>]
-> x = 1 + some_variable
(Pdb++) so[<tab_here_produces_tab>]
103
104 def test_me(some_variable):
--> 105 x = 1 + some_variable
106 return x
107
ipdb> so[<tab_here_produces_tab>]
3. pytest--pdb--pdbcls=IPython.terminal.debugger:pdb
这将在运行到错误时打开基本shell。但没有标签完成
-> x = 1 + some_variable
(Pdb) so[<tab_here_produces_tab>]
-> x = 1 + some_variable
(Pdb++) so[<tab_here_produces_tab>]
103
104 def test_me(some_variable):
--> 105 x = 1 + some_variable
106 return x
107
ipdb> so[<tab_here_produces_tab>]
103
104 def测试(某些变量):
-->105 x=1+某些变量
106返回x
107
ipdb>so[]
4. <代码>fancycompleter.interact()
按建议尝试了fancycompleter.interact()
,运气不佳(使用pdb
,ipdb
和pdbpp
,fancycompleter v.0.8
甚至)
5. <代码>pytest--pdb-s
如前所述,有-s
标志可用于pytest
。但是,制表符补全仅部分起作用:如果同一起始字符有多个选项,它将打印出可能的变量列表。这缺乏快速选择一个匹配变量的能力(例如,在IPython shell中提供):
有没有办法让变量名选项卡完成工作?我更喜欢ipdb
或pdbpp
而不是普通的pdb
,但即使是使用pdb
的工作解决方案也可以 这不是最佳解决方案,但总比没有好。也许有人会给出更好的答案。这就是我所做的
1.别名emb
用于启动IPython.embed()
1.1. 台阶
- 生成
文件(~/.pdbrc
),包含以下内容C:\Users\\.pdbrc
- 当使用
标志运行--pdb
时,它启动标准库pdb,或者如果安装了pdbpppytest
- 标准图书馆 文件说:
- 已安装的
(pdbpp
)pip安装pdbpp
- 制作了
1个文件(~/.pdbrc.py
),包含以下内容C:\Users\\\.pdbrc.py
setup()
方法创建~/.pdbrc.py
,则在进入调试器时将调用它。因此,可以创建一个脚本,在每次输入调试shell时调用该脚本
1注意:这一个具有.py
扩展名,而第一个与内置pdb关联的扩展名没有
3.用法示例
运行pytest--pdb
(与问题中的.py文件相同)。如图所示,变量some_variable
的制表符完成工作正常
在上找到一些相关讨论,看起来您忘记了
-s
选项谢谢!没有注意到那面旗帜。这是一个很好的解决方案,因为它没有添加额外的步骤,但它的缺点是,如果有多个变量名以相同的字母开头,它实际上不允许制表符完成。它只打印可用的选项。我将添加一个示例图片。您最近是否使用最新版本的pytest尝试了pdbpp
。选项卡完成在我的机器上使用pytest上的pdbpp可以正常工作。是的,我现在使用pdbpp 0.10.2
和pytest 5.4.3
进行了尝试,但是没有选项卡完成。可能缺少其他软件包,或者是Windows/Powershell的问题。