我需要帮助即可退出测试而不会出错。我有此代码:
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.close
或sys.quit
关闭浏览器。
.close()
将在测试浏览器中关闭一个选项卡。.quit()
将关闭浏览器窗口。
如果您需要更多帮助,请查看Selenium Python绑定文档。在编写Python/Selenium测试时,这一直是我的帮助。
如果您真的想停止测试,那么其中一种方法是使用force stop -f
unittest
-f, - fab:快速停止测试在第一个错误或失败上运行。
尝试使用-f选项运行模块:
python sample.py -f
但是,它不会将测试标记为通过,您应该从try..except...
块中删除sys.exit()
如果您可以控制测试,则可以按照以下方式进行:
- 在要退出的方法中设置
shouldStop = True
(请参阅此处。 - 测试方法运行后检查(每种测试方法都将测试对象返回其呼叫者),无论是
True
还是False
,如果是真的,请调用STOP()
方法。(请参阅此处)
或
另一个选项是pytest
框架,它提供了退出运行的设施。在要退出的任何地方添加以下行:
pytest.exit("decided to stop the test run")
参考:
- 如何使用UNITSEST从测试或设置内停止所有测试?
旧答案:
替换sys.exit()
如下:
try:
sys.exit()
except:
print "its ok"
sys.exit()返回SystemExit异常。
我假设您正在使用unittest
框架。仅当测试方法中没有故障/异常时,测试才是PASS
。作为sys.exit()抛出异常,unittest
将其标记为FAIL
。
我们要做的是处理测试方法本身中的异常,因此没有例外/失败,这使得unittest
将测试方法标记为PASS
。