2013-08-06 104 views
0

我們正在開發一個FORTRAN90中的數值模擬程序(過程式,而不是OO,不幸的是一些COMMON塊存在但沒有GOTO :-))並且正在考慮使用Python來幫助我們在單元測試(追溯)和驗證測試。我們希望在Python中建立一個測試環境,以a)進行單元測試和b)進行驗證測試(即使用衆所周知的解決方案運行小型測試用例)。我們希望能夠將不同的測試分組在一起(通過FORTRAN90程序進行單元測試或通過問題主題進行驗證測試),並允許單獨或分組運行測試。使用Python測試非python代碼

模擬程序是基於文本輸入/輸出的,所以我們可以想出一些輸入文件來運行並與驗證的輸出文件進行比較。但是,對於單元測試,我想我們可能需要爲每個FORTRAN90子例程編寫包裝。

以前有人有過類似的情況嗎?你可以給我們什麼提示?

謝謝。

(順便說一句改寫在Python的FORTRAN90代碼(還)沒有一個選項)

+0

你試過[f2py](http://www.f2py.com/)嗎? – falsetru

+0

爲什麼不使用'bash'腳本來運行它? –

+0

您也可以使用GNU Autotools定義您自己的測試套件。 (我從來沒有爲自己嘗試過...) – Stefan

回答

0

這裏是提供一些見解,你可以如何去與你的任務的鏈接:

Calling Fortran from Python

此鏈接還提供兩個模塊的參考 - f2pyfwrap。的鏈接,f2py似乎被打破,因此你可以參考f2py文檔here

+0

我使用f2py的唯一問題是OP可能不得不修改它們的代碼,以便在它們想要的是單元測試框架時使用f2py進行編譯。 – SethMMorton

1

如果使用「使用os.system()」功能,這可以用來調用LINUX/UNIX從命令直接使用python腳本。您也可以使用「subprocess」模塊。

使用方法如下:

使用os.system( 「LS-G」)

這將調用 'LS -G' 蟒蛇就像如果你自己調用它。您也可以使用此命令輕鬆編譯並調用fortran代碼。或者,如果您熟悉bash腳本,則可以將其用作單元測試的包裝。科學計算社區似乎喜歡perl這些類型的任務,但python應該工作得很好。

至少你在使用fortran90而不是fortran77。那些goto語句可以使代碼調試過於有趣。 :P

+2

一般來說,不是'subprocess'模塊[首選](http://docs.python.org/2/library/subprocess。html#subprocess-replacements)通過'os.system()'這幾天? – Deditos