在没有错误的情况下退出Python Webdriver脚本



我需要帮助即可退出测试而不会出错。我有此代码:

tabla = self.driver.find_element_by_css_selector(".tablaSolicitudes")
for estado in tabla.find_elements_by_tag_name("td"):
    e = estado.text
if e.find("Multiadhesion") != -1:
    print("La solicitud " + solicitudes[i] + " se encuentra con MultiAdhesion. Finaliza el Test.")
    sys.exit()

如果该条件为真,则测试应结束。关键是,有这样的错误,我得到了这个错误:

sys.exit()
SystemExit
----------------------
Ran 1 test in 139.733s
FAILED (errors=1)

但是测试还可以,所以,我该如何进行适当的"测试退出",以便我不会遇到此错误?

非常感谢!

sys.exit()提出了 SystemExit异常,您可以使用:

进行测试
with self.assertRaises(SystemExit):
    your_method()

现在您的测试应该成功。

我不确定sys是否在您的代码中定义了更高的定义,但这可能就是测试存在问题的原因。

要关闭硒浏览器测试(我相信您正在使用,从selenium-webdriver标签中推断出来),通常使用.close().quit()标签。假设sys是浏览器,在您的if语句的末尾,您将使用sys.closesys.quit关闭浏览器。

.close()将在测试浏览器中关闭一个选项卡。.quit()将关闭浏览器窗口。

如果您需要更多帮助,请查看Selenium Python绑定文档。在编写Python/Selenium测试时,这一直是我的帮助。

如果您真的想停止测试,那么其中一种方法是使用force stop -f unittest

中可用

-f, - fab:快速停止测试在第一个错误或失败上运行。

尝试使用-f选项运行模块:

python sample.py -f

但是,它不会将测试标记为通过,您应该从try..except...块中删除sys.exit()

如果您可以控制测试,则可以按照以下方式进行:

  1. 在要退出的方法中设置shouldStop = True(请参阅此处。
  2. 测试方法运行后检查(每种测试方法都将测试对象返回其呼叫者),无论是True还是False,如果是真的,请调用STOP()方法。(请参阅此处)

另一个选项是pytest框架,它提供了退出运行的设施。在要退出的任何地方添加以下行:

pytest.exit("decided to stop the test run")

参考:

  1. 如何使用UNITSEST从测试或设置内停止所有测试?

旧答案:

替换sys.exit()如下:

try:
    sys.exit()
except:
    print "its ok"

sys.exit()返回SystemExit异常。

我假设您正在使用unittest框架。仅当测试方法中没有故障/异常时,测试才是PASS。作为sys.exit()抛出异常,unittest将其标记为FAIL

我们要做的是处理测试方法本身中的异常,因此没有例外/失败,这使得unittest将测试方法标记为PASS

最新更新