2012-06-05 51 views
1

整合Python腳本我已經用Python編寫的一些測試腳本,其要求進行paritcular應用程序和結果輸出到一個數據庫中的一些API,以便我可以用碧玉來報告結果。目前,該腳本使用Python解釋器運行,即在具有某些參數和變量的腳本,然後啓動測試中體改蟒蛇文件雙擊。我想轉向更友好的用戶界面,以便其他人可以使用這些測試腳本,而無需修改Python代碼。因此,我想使用Django和創建一個網頁,有複選框,如果該複選框被選中,那麼它會執行特定的Python測試腳本或文本框,將值傳遞給一個給定的變量,例如。關於如何實現這一點,我有幾個問題。和Django

1 - 我需要在執行Python代碼Django的源代碼,或者我可以調用Python腳本從Django在擔任了該網頁?

2 - 如果我要從網頁上運行此操作,我如何確保如果網頁已關閉,則測試會在後臺繼續。

3 - 有沒有辦法輸出測試的情況下,以一個網頁,如果網頁的狀態被關閉,該狀態如果網頁被重新打開是availble的?

非常感謝 - OLI

回答

3

如果你有一個Python功能,您可以從一個Django Django的觀點稱可能與一個形式參數輸入。如果你有很長的流程,你可能想從這裏考慮一個技巧:How to start a long-running process from a Django view?

from mytests import testfunc 

def test_parameter_view(request): 
    if request.method == 'POST': # If the form has been submitted... 
     form = ParameterForm(request.POST) 
     if form.is_valid(): 
      testfunc(form.cleaned_data['parameter']) # <-- Here the actual testing happens 
      return HttpResponseRedirect(reverse(test_result)) # Redirect after POST 
    else: 
     form = ParameterForm() 

    return render_to_response('test.html', { 
     'form': form, 
    }) 

在你test_result視圖,您可以訪問數據庫中的測試結果值。

如果用戶關閉瀏覽器或不不影響已經被啓動的服務器進程。而且,由於您將結果寫入數據庫,因此它們是持久的,並且可以在測試完成後隨時訪問。

+0

你給了我一些東西來看看。測試腳本肯定需要運行服務器端,這是一個很好的建議。 我需要再次看向這部分更多,雖然 testfunc(form.cleaned_data [「參數」]) 這看起來像在那裏我會收集我的參數中傳遞給腳本..謝謝 – Oli

+0

是你可以在關於django表單的文檔中閱讀很多內容。另外如果你發現這有幫助,請點擊接受我的回答:) – Maccesch

0

如果你不想在港腳本到Django的觀點,還有另一種方式:

1 - 設置形式與要傳遞到腳本

2的所有選項 - 使用var1 = request.POST['param1']等獲取或POST形式參數並將它們保存到變量中

3 - 使用名爲subprocess的模塊來執行腳本。 http://docs.python.org/library/subprocess.html