Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing Pycharm单元测试交互调试命令行不';行不通_Unit Testing_Debugging_Pycharm - Fatal编程技术网

Unit testing Pycharm单元测试交互调试命令行不';行不通

Unit testing Pycharm单元测试交互调试命令行不';行不通,unit-testing,debugging,pycharm,Unit Testing,Debugging,Pycharm,调试单元测试时(通过pycharm测试运行程序),可以打开交互式命令行,但是(与调试常规脚本时不同),输入的命令不会产生任何输出。事实上,似乎stdout正在某个地方被捕获,因为stderr按预期工作: >>> print "a" >>> import sys >>> sys.stderr.write("moof") moof >>> sys.stdout.write("moof") >>> sys.std

调试单元测试时(通过pycharm测试运行程序),可以打开交互式命令行,但是(与调试常规脚本时不同),输入的命令不会产生任何输出。事实上,似乎stdout正在某个地方被捕获,因为stderr按预期工作:

>>> print "a"
>>> import sys
>>> sys.stderr.write("moof")
moof
>>> sys.stdout.write("moof")
>>> sys.stderr.write("test")
test

这是预期的行为吗?我非常喜欢交互式调试控制台,如果它在调试单元测试时表现良好,那就太棒了。

这可能是因为您的测试运行程序正在捕获stdout而不是stderr

我使用它,所以我看不到任何输出。如果我想查看输出,我必须将
-s
标志传递给py.test runner,这可以通过修改运行/调试配置并将此标志添加到选项字段来完成。
(运行>编辑配置>默认值>Python测试>py.test>将
-s
添加到“附加参数”字段。)


注意:
-s
标志同样可以与

一起用于unittest,您可以将“--capture=no”添加到Pycharm运行/调试配置中-这将实时显示所有输出

如果您不想在每次运行测试时更改运行/调试配置,可以将JB_DISABLE_BUFFERING环境变量设置为“-s”。
如果使用^+SHIFT+D快捷方式在编辑器中调试当前文件的测试,则此选项非常有用

Unittests通常不能与调试器结合使用,除非您明确地将它们视为需要调试的对象。为此,请使用修饰符“@unittest.debug”


美国。另请参阅此主题的详细信息。

(运行>编辑配置>默认值>Python测试>py.test>将-s添加到选项字段。)(运行>编辑配置>默认值>Python测试>py.test>将-s添加到选项字段------->(其他参数)。)设置pytest默认运行测试:(首选项>工具>Python集成工具>默认测试运行程序)除了修改默认值外,还需要修改现有的运行配置。
运行>编辑配置>Python测试>“my_test_case.py中的py.test”
将-s添加到“附加参数”中字段。在PyCharm 2019.1中,这将变成
Run>Edit Configurations>Templates>Python tests>pytest
,以进入相应的默认对话框。
>>> print 'a'
a
>>> import sys
>>> sys.stderr.write('moof')
moof
>>> sys.stdout.write('moof')
moof
>>> sys.stderr.write('test')
test