簡體   English   中英

測試一個使用子進程生成bash子shell的python腳本..有可能嗎?

[英]Testing a python script which use a subprocess to spawn a bash subshell .. is it possible?

我有一個相當復雜的項目,我想測試..但我找不到如何完全測試它。

該項目本身是Django的開發環境。 它包含一個Python腳本,可用於創建新項目或激活開發環境。

為了激活開發環境,我使用了類似Virtualenv的技術。 我的python腳本調用了一個外殼腳本,該外殼腳本本身會生成一個rcfile。

聽起來比實際要復雜。 工作流程如下所示:

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

duke是我的Python腳本,它調用一個名為dev的bash腳本。 開發腳本僅包含如下一行:

#!/ bin / bash。 /路徑/到/斌/環境

因此,它基本上只是啟動一個子外殼,在其中我獲得了一個名為env的rcfile。

在開發過程中,環境本身會小心地創建所有必需的命令和環境變量。

我的問題是,我無法測試特定於該環境的任何東西,因為我的腳本會生成一個子進程,然后該子進程會在子外殼中激活該環境。 子進程關閉,子外殼保持打開狀態,直到我退出它為止。

雖然有效,但我找不到可靠的測試方法。

是否有可能對此進行測試?

這是代碼:

您運行的任何腳本都將始終產生一個子shell。

您應該致電. %(base_path)s/.duke/bin/env 在您啟動python代碼之前,請先在命令行上或作為生成python的同一腳本的一部分,先運行. %(base_path)s/.duke/bin/env

不要忘了導出可能在子流程中使用的變量和函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM