Python 升华文本3-输出面板(生成系统)忽略打印/标准输出
我已经建立了一个系统,输出运行应用程序的日志和正在运行的测试。让我烦恼的是,如果我在代码中添加打印,sublime只会忽略它们。如果我使用日志来输出一些东西,那么它就可以工作了,但是使用打印来快速检查要方便得多 是否有在面板中启用标准输出/打印的选项,这样就不会被忽略 若我直接通过终端运行相同的命令,那个么我可以看到打印 因此,如果让我们在我的代码中说:Python 升华文本3-输出面板(生成系统)忽略打印/标准输出,python,sublimetext3,stdout,build-system,Python,Sublimetext3,Stdout,Build System,我已经建立了一个系统,输出运行应用程序的日志和正在运行的测试。让我烦恼的是,如果我在代码中添加打印,sublime只会忽略它们。如果我使用日志来输出一些东西,那么它就可以工作了,但是使用打印来快速检查要方便得多 是否有在面板中启用标准输出/打印的选项,这样就不会被忽略 若我直接通过终端运行相同的命令,那个么我可以看到打印 因此,如果让我们在我的代码中说: 打印“某物…” 它只是被忽略了,我并没有在输出面板中看到 命令和整个生成系统配置如下所示: { "shell_cmd": "pytho
打印“某物…”
它只是被忽略了,我并没有在输出面板中看到
命令和整个生成系统配置如下所示:
{
"shell_cmd": "python ~/openerp/scripts/odoo-run/run.py 10 -p 8079 --addons-path=~/odoo10/source/misc -d git_odoo -u project_task_sequence --test-enable",
"name": "Odoo Run",
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"working_dir": "/home/oerp/odoo10/odoo/",
"syntax": "Packages/Makefile/Make Output.sublime-syntax",
}
在“设置”中,我发现唯一与“输出面板”相关的选项是:show\u panel\u on\u build
,该选项已启用
更新
显示我得到的结果的代码片段:
def test_sequence_number_1(self):
"""Test how sequences were generated."""
import logging
logger = logging.getLogger('Test')
logger.warn('This is outputed')
print "this is not outputed"
ProjectTask = self.env['project.task']
task_1 = ProjectTask.create({
'name': 'Task 1 (test)',
'project_id': self.project.id,
'generate_seq_number': True,
})
...
...
这是我通过sublime在输出面板中看到的:
...
...
2016-12-28 17:54:26,479 659 INFO git_odoo odoo.addons.project_task_sequence.tests.test_project_sequence: test_sequence_number_1 (odoo.addons.project_task_sequence.tests.test_project_sequence.TestProjectSequence)
2016-12-28 17:54:26,479 659 INFO git_odoo odoo.addons.project_task_sequence.tests.test_project_sequence: ` Test how sequences were generated.
2016-12-28 17:54:26,854 659 WARNING git_odoo Test: This is outputed
2016-12-28 17:54:27,271 659 INFO git_odoo odoo.addons.project_task_sequence.tests.test_project_sequence: test_sequence_number_2 (odoo.addons.project_task_sequence.tests.test_project_sequence.TestProjectSequence)
2016-12-28 17:54:27,271 659 INFO git_odoo odoo.addons.project_task_sequence.tests.test_project_sequence: ` Test sequence generation with custom task seq prefixes.
2016-12-28 17:54:27,616 659 INFO git_odoo odoo.addons.project_task_sequence.tests.test_project_sequence: Ran 2 tests in 1.137s
2016-12-28 17:54:27,616 659 INFO git_odoo odoo.addons.project_task_sequence.tests.test_project_sequence: OK
另外,当我通过sublime构建系统运行
nosetests-S
命令时,打印输出正确。不知道为什么这一个不同。Sublime捕获标准输出并显示它,这样应该可以正常工作。你能提供一个展示这种行为的小代码示例吗?我不熟悉这个框架,但文档表明-s
告诉nosetest不要捕获标准输出。因此,我认为这不是一个崇高的问题,更重要的是,默认情况下,鼻测试是在崇高看到它之前吃掉了stdout@奥达特努德:你全搞错了。恰恰相反。我说过,它可以很好地使用nose,但不能使用启动应用程序的自定义脚本(请参见构建系统配置)。虽然脚本可以启动一个应用程序,但如果我直接通过终端运行它,我可以看到打印,但由于某些原因,无法通过升华面板看到。对不起,我以为你说“虽然当我通过升华构建系统运行nosetests-s命令时,打印输出正确。不知道为什么这个不同。”我认为这意味着当您使用nosetests-s
时,它的工作方式与您期望的工作方式相同(可以看到打印)。根据文档和您的结果,我假设nosetests
捕获stdout,除非您通过传递-s
告诉它不要这样做。是的,它与nosetests一起工作。事实上,这个问题和鼻测试完全无关。我只是举个例子,在某些情况下stdout是有效的,但在其他情况下它不是。