[英]Python: Terminate an imported script without killing the script that is doing the import
抱歉,在我完成之前閱讀此內容的人; 它在我想要...之前發布了...
我有大量的硒測試,想過夜進行。 但是,到目前為止,每個測試都要求我登錄到服務器(速度很慢-大約需要整個測試時間的一半)。 我試圖通過使用相同的IE驅動程序來避免這種情況。 當我的測試嚴重失敗時,我想停止該特定測試並繼續進行。 但是,我似乎無法立即殺死所有測試而無法做到這一點。
例如,下面的腳本簡化了我遇到的問題(否則,我將不得不在此處粘貼太多代碼):
# Wrapper.py:
driver = webdriver.Ie()
try:
import test1
test1.setup(driver)
except Exception as e:
print e
try:
import test2
test2.setup(driver)
except Exception as e:
print e
try:
import test3
test3.setup(driver)
except Exception as e:
print e
# test1.py
def setup(driver):
# do stuff in test1
# test2.py
def setup(driver):
# do stuff in test2
# test3.py
def setup(driver):
# do stuff in test3
這看起來可能很愚蠢,但確實可以,但是它允許我使用恆定的IE瀏覽器運行多個Selenium測試。 但是,有時需要終止測試(無論是嚴重錯誤還是過多錯誤)。 通常使用以下方法完成此操作:
sys.exit(0)
但是,以test2.py為例,使用該命令將殺死test2.py腳本和wrapper.py腳本。 我希望它只殺死test2,讓我繼續test3。 這類似於擁有一個批處理文件,該文件將分別調用每個測試並等待之前的測試完成。 但是,在批處理文件中,無法傳遞驅動程序,就好像每個驅動程序都是相同的驅動程序一樣。
我正在使用:
Python 2.7
Windows 7 64-bit
Selenium 2.44
通常您會通過返回False提前終止測試
# test2.py
def setup(driver):
# do stuff in test2
if should_fail:
return False
...
return True
但是完全有可能我沒有正確理解您的問題...
另一種選擇是提出一個例外
def setup(driver):
assert ContitionIsTrue,"Failed Condition Check!"
這將被您的異常處理程序捕獲
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.