我有一個相當複雜的項目,我想測試..但我找不到如何完全測試它。測試使用子進程產生bash子shell的python腳本..有可能嗎?
該項目本身是django的開發環境。它包含一個Python腳本,可用於創建新項目或激活開發環境。
要激活開發環境,我使用類似Virtualenv的技術。我的python腳本調用一個本身源自一個rcfile的shell腳本。
這聽起來比實際上更復雜。工作流程是這樣的:
$ cd my-project/
$ duke dev
(my-project)$
公爵是我的Python腳本調用一個名爲dev的bash腳本。開發腳本只包含這樣一行:
#!/ bin/bash 。/path/to/bin/env
因此,它基本上只是啓動一個子shell,在該子shell中我生成一個名爲env的rc文件。
env本身需要在開發過程中創建所需的所有命令和環境變量。
我的問題是,我無法測試任何特定於此env的東西,因爲我的腳本產生了一個子進程,然後在子shell中激活env。子進程關閉,子外殼一直打開,直到我退出。
雖然它的工作,我無法找到一種方法來可靠地測試它。
它甚至可以測試這個嗎?
下面的代碼: https://github.com/h3/django-duke-client/blob/master/dukeclient/commands/dev.py#L22
- dev的腳本調用
這幾乎是我到目前爲止的結論..現在我問自己的問題是,如果有可能爲一個subshell退出本身。如果可以,我可以用測試標誌調用我的腳本,使env在激活時運行一個測試套件,然後退出。如果它有效,它可能會解決我的問題。 – 2012-03-03 04:54:06