问题描述
我正在尝试调试一些随机单元测试,并且由于pytest
标志而导致命中失败的断言时,--pdb
将我放到pdb提示符下。但是,我想设置一个断点并重新运行该函数,以确定出了什么问题。我已经尝试过显而易见的(b 1234 RET tested_func('a','b','c')
),但从未命中过断点,并且提示返回了。我也尝试过debug tested_func('a','c')
,但这只成功了'tested_func not defined'
。
要复制:
collected 1 item
under_test.py F [100%]
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> traceback >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
self = <under_test.TestFunc testMethod=test_func>
def test_func(self):
r = func('a','c')
> assert r == 'c'
E AssertionError: assert 'a' == 'c'
E - a
E + c
under_test.py:7: AssertionError
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> entering PDB >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> /home/anthony/work/IMG/brd/tst_so/under_test.py(7)test_func()
-> assert r == 'c'
(Pdb) func('a','c')
'a'
(Pdb) list
2 import unittest
3
4 class TestFunc(unittest.TestCase):
5 def test_func(self):
6 r = func('a','c')
7 -> assert r == 'c'
8
9 def func(c1,c2,c3):
10 irrelevant = c3 + c1 + c2
11 return c1
12
(Pdb) b 10
Breakpoint 1 at /home/anthony/work/IMG/brd/tst_so/under_test.py:10
(Pdb) func('a','c')
'a'
(Pdb) debug 'func("a","b","c")'
ENTERING RECURSIVE DEBUGGER
> <string>(1)<module>()
((Pdb)) s
--Return--
> <string>(1)<module>()->None
((Pdb)) s
> /usr/lib/python2.7/bdb.py(404)run()
-> self.quitting = 1
((Pdb)) s
LEAVING RECURSIVE DEBUGGER
> /usr/lib/python2.7/cmd.py(163)postcmd()
-> return stop
(Pdb) debug func("a","c")
ENTERING RECURSIVE DEBUGGER
> <string>(1)<module>()
((Pdb)) s
NameError: "name 'func' is not defined"
> <string>(1)<module>()
((Pdb)) s
--Return--
> <string>(1)<module>()->None
((Pdb)) s
NameError: "name 'func' is not defined"
> /usr/lib/python2.7/bdb.py(400)run()
-> exec cmd in globals,locals
((Pdb))
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)