测试使用子进程生成bash子shell的python脚本是否可能?

时间:2012-03-02 20:39:03

标签: python unit-testing bash

我有一个非常复杂的项目,我想测试..但我找不到如何完全测试它。

项目本身就是django的开发环境。它由一个Python脚本组成,可用于创建新项目或激活开发环境。

要激活开发环境,我使用类似Virtualenv的技术。我的python脚本调用一个shell脚本,它本身就是一个rcfile。

这听起来比实际更复杂。工作流程如下:

$ cd my-project/
$ duke dev
(my-project)$

duke是我的Python脚本,它调用名为dev的bash脚本。 dev脚本只包含这样一行:

#!/斌/庆典    。 /路径/为/ bin / env的

所以它基本上只是启动一个子shell,我在其中获取一个名为env。

的rcfile

env本身注意创建开发时所需的所有必要命令和环境变量。

我的问题是我无法测试任何特定于此env的内容,因为我的脚本会生成一个子进程,然后在子shell中激活env。子进程关闭,子shell保持打开状态,直到我退出。

虽然它有效但我找不到可靠测试它的方法。

甚至可以测试一下吗?

以下是代码:

1 个答案:

答案 0 :(得分:1)

您运行的任何脚本都将始终生成子shell。

在启动python代码之前,应该在命令行上或作为生成python的相同脚本的一部分调用. %(base_path)s/.duke/bin/env

不要忘记导出可能在子流程中使用的变量和函数。