Python:终止导入的脚本,而不会终止正在执行导入的脚本

时间:2015-06-11 18:21:31

标签: python selenium

对不起谁在我说完之前读了这个;它发布之前我想...

我有大量的Selenium测试,我想在一夜之间运行。但是,截至目前,每个测试都要求我登录服务器(速度很慢 - 占整个测试持续时间的一半)。我试图通过使用相同的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,允许我继续测试3。它类似于有一个批处理文件可以单独调用每个测试并等到上一个测试完成。但是,在批处理文件中,无法传入驱动程序,就好像它们是每个驱动程序的驱动程序一样。

我正在使用:

Python 2.7
Windows 7 64-bit
Selenium 2.44

1 个答案:

答案 0 :(得分:0)

通常你会通过返回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!"

这将由您的异常处理程序

捕获