1

我将如何去测试一个像这样的 unix 命令bc?例如;

philippe$ bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
2 + 2
4
3 * 10
30
10 / 5
2
-1
-1

我熟悉模块subprocessospython。我也在阅读ScriptTest,但我不知道如何使用它......我需要的是调用该工具,然后通过一些操作,例如2+2,得到结果......剩下的很容易。我想知道是否有一种更简单的方法可以在没有太多解析的情况下做到这一点......

4

3 回答 3

2

您可能想查看sh模块,它包装了 unix 命令并允许您像调用函数一样调用它们。(你也可以传入你想要的并检索输出)

于 2013-10-21T05:19:51.083 回答
2

我还没有尝试过,但这旨在解决您的问题:

http://pexpect.sourceforge.net/pexpect.html

于 2013-10-21T05:15:16.593 回答
1

对于 running bc,解析非常简单。您可以subprocess.PIPE用于与子进程进行通信:

import subprocess as sp

cmd = 'bc'
p = sp.Popen(cmd, stdin = sp.PIPE, stdout = sp.PIPE)

# Pass in input, read output
p.stdin.write("2 + 2\n");
result = p.stdout.readline()
print 'Got result: %s'%result

p.stdin.close() # This sends EOF to bc, which closes it.
retval = p.wait()
print '%s finished with return value %i'%(cmd, retval)
于 2013-10-21T17:40:55.180 回答