2017-04-21 121 views
2

下面如何不運行測試是有一段代碼,處理包含一個下拉警報:如果警報關閉

了SoapUI項目設置腳本

import com.eviware.soapui.support.* 
def alert = com.eviware.soapui.support.UISupport 
def urls = [] 

project.properties.each 
{ 
    if (it.value.name.startsWith("BASE_URL_")) 
    { 
     urls.push(it.value.name.replace("BASE_URL_", "")) 
    } 
} 

def urlName = alert.prompt("Please select the environment URL", "Enter URL", urls) 

我注意到當我選擇x按鈕來關閉警報時,它仍然運行測試(由於我沒有選擇環境,它會失敗)我的問題是,如何編寫代碼以便在警報關閉時點擊x按鈕),它不會運行測試?

謝謝

+0

什麼,當你點擊'cancel'會怎麼樣? – Rao

+0

所以這段代碼是在一個項目設置腳本中。您選擇項目文件夾並選擇TestSuites並單擊運行。如果按下取消按鈕或x按鈕,則會顯示錯誤提示,說明存在缺失的內容。在警報上單擊確定,第一個測試套件將運行一個失敗的測試套件,然後再次出現相同的錯誤,關閉後或單擊確定,第二個套件將失敗並繼續,直到所有套件都失敗 – BruceyBandit

+0

不確定何時要取消?顯然它會失敗,因爲沒有終點。如果你能控制的話,我很害怕。 – Rao

回答

2

通常,用戶不要取消項目執行。

但是在執行項目之前,您會在其上面寫下一層,它將在提示中選擇域地址,然後取消,因爲用戶不希望運行該項目。

現在你寫的腳本沒有做任何狀態檢查。爲了實現你正在尋找的是有條件知道用戶是否點擊了Ok或否則不執行測試套件。

下面是修改的項目級別Setup Script

import static com.eviware.soapui.support.UISupport.prompt 
def urls = [] 
def prefix = 'BASE_URL_' 
project.properties.each { 
    if (it.value.name.startsWith(prefix)) { 
     urls.push(it.value.name.replace(prefix, "")) 
    } 
} 

def suffix = prompt("Please select the environment URL", "Enter URL", urls) 
if (suffix) { 
    log.info 'received user input' 
    def propertyName = prefix+suffix 
    def domainAddress = project.getPropertyValue(propertyName) 
    log.info "Selected environment : ${propertyName} - ${domainAddress}"  
} else { 
    log.warn 'haven\'t received user input' 
    log.warn 'No base URL is selected or cancelled, try again' 
    assert false 
}