测试从sys.stdin读取的程序

时间:2014-12-04 07:47:00

标签: python

我正在玩一些编程挑战,将通过以下方式检查提交:

python my_submission < in.txt > out.txt

当我尝试提交时,我想阅读一些案例/数字/来自 in.txt 的内容,看看发生了什么。目前我正在这样做:

import sys
file = open('in.txt') 
sys.stdin = file  

for line in sys.stdin:
     case1 = line.split()
     some_function(case1)

因此,当我在Sublime文本中运行我的python程序(命中cmd + B)时,我可以看到我是否设法正确读取输入,正确处理一个测试用例等等。然后我只是推荐出第二个我的计划应提交给提交法官的第3行。

我只是想知道:这是&#34;优先工作流程&#34;处理这个?专业程序员是否编写了某种单元测试模板函数来做到这一点?

1 个答案:

答案 0 :(得分:0)

首选工作流程是让shell执行重定向,这样您就不必一直更改程序代码。

但是您的IDE(崇高文本)不允许您指定此类参数,因此它会限制您的选择。

解决方案/解决方法:

  1. 从shell启动程序。这意味着您需要始终在终端窗口和升华之间切换。
  2. 编写第二个运行第一个程序并设置输入重定向的程序。这样,您只需要在sublime中切换标签。
  3. 使用stdin模块,而不是直接从fileinput读取。请参阅How do you read from stdin in Python?这将允许您为代码编写正确的单元测试。然后,您可以使用Sublime的Python Unittest Helper插件。