python,unittest,用命令行参数测试脚本

时间:2012-10-09 23:41:27

标签: python unit-testing parameters

我编写了一个python脚本,它接受命令行参数并播放一轮Tic Tac Toe 运行它看起来像这样......

  

运行ttt o#xo ## x ## x 0 1

如果移动是合法的,那么它将打印新的电路板布局以及是否有人赢得游戏

我必须使用unittest为它编写测试。我不知道如何使用各种命令行参数测试整个脚本,我看到的所有示例似乎只是测试脚本中的各个函数。 该脚本还使用argparse来解析参数

谢谢!

1 个答案:

答案 0 :(得分:11)

重构你的程序,使其主要动作(减去argparsing)发生在“main”函数中:

def main(args):
    ...

if __name__ == '__main__':
    args = parse_args()
    main(args)

然后,您可以针对mainparse_args的行为编写测试。

PS。可以使用subprocess模块将您的程序作为外部进程调用,然后解析输出,但我认为这将是更加丑陋和不必要的。

PPS。作为以这种方式编写程序的额外好处,您将能够将程序作为模块导入,并在其他脚本中调用其主函数。例如,如果您有一天想为它构建GUI,那么这可能很有用。