2013-03-22 85 views
1

在我的試用測試用例中,我想從源代碼樹運行腳本。試用更改工作目錄,所以簡單的相對路徑不起作用。實際上,Trial的臨時目錄位於源代碼樹內部,但假設情況似乎並不理想。即,我可以這樣做:如何在Twisted試驗測試中訪問源代碼樹?

def source_file(p): 
    return os.path.join('..', p) 

有沒有更好的方法?

+0

有關您的文件夾strucutre和試用命令行參數的更多細節將有所幫助。你的代碼是在一個包中,還是隻使用模塊? – 2013-03-23 08:55:27

+0

此存儲庫中有多個軟件包。我在整個軟件包和單個測試模塊上運行試用。 – daf 2013-03-23 11:34:46

回答

2

如果你想找到旁邊的測試文件並運行它作爲一個腳本,你可以這樣做:

from twisted.python.modules import getModule 
script = getModule(__name__).filePath.path 
# ... 
reactor.spawnProcess(..., script, ...) 

你也可以用它來支持存儲在一個zip文件的代碼,儘管用Python調用它變得更加困難。你有沒有考慮過使用python -m

+0

該腳本不是Python腳本。人們也可以想象想要獲取源目錄中文件中包含的一些測試數據的路徑。 – daf 2013-03-23 14:06:16

+0

無論如何,如果我對有問題的軟件包進行試用,或者如果我使用來自軟件包外部的測試文件名進行調用,那麼您的建議就會奏效。如果我從包子目錄中調用試用版,我會在路徑導入器緩存(PEP 302違例 - 檢查您的本地配置)中得到一個「UserWarning:test」(對於模塊test_chunkpost)。「但我可以忍受這一點。 – daf 2013-03-23 14:12:10

+0

是的,這意味着你的Python解釋器對它自己的導入路徑有一些不一致的看法; 'sys.path'上有一個條目,指向另一個條目的某處。不要那樣做:)。 – Glyph 2013-03-24 03:08:27