UNIXコマンドをテストするために使用している次の方法がありますbc
...式を受け取り、それを実行し、出力を返します...
def run_test(expr=""):
try:
process = sp.Popen('bc',
stdin=sp.PIPE,
stdout=sp.PIPE,
stderr=sp.PIPE)
process.stdin.write(expr)
result = process.stdout.readline()
process.stdin.close()
retval = process.wait()
return result
except Exception, e:
print e
# correct expression, returns '4'
print run_test('2+2\n')
ただし、間違った式を渡した場合はexpr
、エラーを正しく処理したいので、そのテストケースexpr
が適切に失敗することをアサートできます...
#never stops
print run_test('2 / 0\n')
ただし、上記の式は決して返されません...たとえば、式が無効であることを示す値 false を返したいのですが、アサートすると、
assertTrue(run_test('2 / 0\n'), False)
正しく動作します...どうすればそれを達成できますか?