我需要帮助退出测试而不会出错。我有这段代码:
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)
但测试没问题,那么,我怎样才能做出正确的“测试退出”以便我不会收到此错误?
非常感谢!
答案 0 :(得分:0)
sys.exit()
会引发SystemExit
异常,您可以使用以下方法进行测试:
with self.assertRaises(SystemExit):
your_method()
现在你的测试应该成功。
答案 1 :(得分:0)
如果你真的想停止测试,那么其中一种方法是使用-f
unittest
-f, - fail:fast在第一次错误或失败时停止测试运行。
尝试使用-f选项运行模块:
python sample.py -f
但是,它不会将测试标记为PASS,您应该从sys.exit()
块中删除try..except...
如果您可以控制要运行的测试,那么您可以执行以下操作:
shouldStop = True
(请参阅here。True
还是False
,如果为True,请调用STOP()
方法。 (参考here)或强>
另一个选项是pytest
框架,它提供退出运行的工具。在要退出的位置添加以下行:
pytest.exit("decided to stop the test run")
参考:
旧答案:
替换sys.exit()
,如下所示:
try:
sys.exit()
except:
print "its ok"
sys.exit()返回SystemExit异常。
我假设您正在使用unittest
框架。仅当测试方法中没有失败/异常时,测试才会标记为PASS
。当sys.exit()抛出异常时,unittest
将其标记为FAIL
。
我们所做的是,在测试方法本身处理异常,因此不会抛出异常/失败,这使得unittest
将该测试方法标记为PASS
。
答案 2 :(得分:0)
我不确定sys
是否在您的代码中定义了更高的值,但这可能是测试遇到问题的原因。
要关闭Selenium浏览器测试(我相信您正在使用,从selenium-webdriver
标记推断),通常会使用.close()
或.quit()
标记。假设sys
是浏览器,在if
语句的末尾,您可以使用sys.close
或sys.quit
关闭浏览器。
.close()
将关闭测试浏览器中的标签页。.quit()
将关闭浏览器窗口。
如果您需要更多帮助,请查看Selenium Python Bindings Documentation。在编写python / selenium测试时,它对我来说总是很有帮助。