Appium 如果发生特定异常,将状态从失败更改为跳过

Appium 如果发生特定异常,将状态从失败更改为跳过,appium,pytest,python-appium,Appium,Pytest,Python Appium,我使用pytest和appium在真实手机上运行了数百个测试。偶尔我会收到一些特定于appium的错误,这些错误会将测试标记为失败,但实际上没有检查任何内容。这些错误如下所示: selenium.common.exceptions.WebDriverException: Message: Could not proxy command to remote server. Original error: Error: socket hang up selenium.common.exception

我使用pytest和appium在真实手机上运行了数百个测试。偶尔我会收到一些特定于appium的错误,这些错误会将测试标记为失败,但实际上没有检查任何内容。这些错误如下所示:

selenium.common.exceptions.WebDriverException: Message: Could not proxy command to remote server. Original error: Error: socket hang up
selenium.common.exceptions.WebDriverException: Message: Could not proxy command to remote server. Original error: Error: read ECONNRESET
selenium.common.exceptions.WebDriverException: Message: Could not proxy command to remote server. Original error: Error: read ECONNREFUSED
我不想在出现这种错误的情况下将测试标记为失败,而是跳过这个特定的测试

如果testcase失败,pytest(hook或fixture)中是否有可能检查失败的原因,以及是否存在上面列表中的错误消息之一,以将测试状态从失败更改为跳过

从@hoefling推荐后编辑:
我曾经考虑过xfail,但是接下来我必须将这个标记添加到所有现有的测试中,并在新的测试中记住这一点。同样使用xfail,我将捕获给定异常的每一次出现,但我只想捕获具有特定异常消息的异常。这就是为什么我想在测试后执行一些钩子的原因。

跳过已执行的测试并不是那么直观。您可以使用
xfail
标记:
@pytest.mark.xfail(raises=ErrCls)
其中
ErrCls
是异常类,例如
@pytest.mark.xfail(raises=RuntimeError)
如果引发未经处理的
运行时错误,则将xfail测试
@hoefling我考虑过xfail,但随后我需要将此标记添加到所有测试中,并在编写新测试时记住它。我在想是否有可能用另一种方式来做。仍然有几个选项:您可以在钩子中隐式标记所有测试,如果在用于设置测试的某些autouse fixture中出现异常,您也可以在设置时跳过或xfail测试。我将对此进行检查。谢谢@hoefling感谢您提示将测试标记为xfail。但我还有一个问题。您知道我是否也可以检查异常消息吗?我的意思是只发送包含正确异常和异常消息的测试?因此,消息为“正确消息”的WebDriverException将失败,但消息为“错误消息”的WebDriverException不会失败?