Ada*_*amC 2 python python-3.x pdb
下面是简单的单元测试。
如果我在不使用“ test”作为参数的情况下运行它(例如python -m unittest module_name),它将通过。如果以“ test”作为参数运行它,则会收到“ TypeError:内置操作的错误参数类型”。为什么?
from io import StringIO
import sys
from unittest import TestCase
class TestSimple(TestCase):
def test_simple(self):
old_stdout = sys.stdout
buf = StringIO()
try:
sys.stdout = buf
print('hi')
finally:
import pdb
if 'test' in sys.argv:
pdb.set_trace()
sys.stdout = old_stdout
Run Code Online (Sandbox Code Playgroud)
contextlib.redirect_stdout版本:
from contextlib import redirect_stdout
from io import StringIO
import pdb
import sys
from unittest import TestCase
class TestSimple(TestCase):
def test_simple(self):
buf = StringIO()
with redirect_stdout(buf):
print('hi')
pdb.set_trace()
print('finis')
Run Code Online (Sandbox Code Playgroud)
提前致谢。
编辑: 原始程序已在Debian和Windows 7中的Python 3.4中进行了测试。
类似的东西(使用环境标志而不是命令行参数)似乎在Python 2中挂起,但是按c可以完成它,所以我猜测可能是pdb的UI已被重定向。但是Python 3版本具有最初描述的行为(崩溃),尽管一位同事在Mac OS上在3.4上进行了测试并看到了“挂起”行为。
您需要提供pdb原始文件stdout:
pdb.Pdb(stdout=sys.__stdout__).set_trace()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
430 次 |
| 最近记录: |