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

标签 python unit-testing parameters

我写了一个 python 脚本,它接受命令行参数并玩一轮井字游戏。
运行它看起来像这样......

run ttt o#xo##x## x 0 1

如果移动是合法的,它会打印新的棋盘布局以及是否有人赢了游戏

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

谢谢!

最佳答案

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

def main(args):
    ...

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

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

附言。可以使用 subprocess 模块将您的程序作为外部进程调用,然后解析输出,但我认为这会更丑陋且没有必要。

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

关于python,unittest,使用命令行参数测试脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12809970/

相关文章:

javascript - 用 Mocha 测试 Promise 链

c++ - Googletest 永远不会通过 bazel 测试失败(应该失败),但可以与 cmake 和 clion 一起使用

c++ - OpenJPEG 的 opj_encode 是段错误

python - numpy 非整数网格

python - 如何从 Jupyter Notebook 向 shell 命令 'git push' 输入密码?

python - 将元组列表转换为简单的平面列表

performance - 如何加快 CakePHP 的单元测试

c# - Awesomnium 帖子参数

windows - 如何将以 "!"结尾的参数传递给另一个bat文件?

python - 使用 .htaccess 通过 Tornado 保护 Web 请求