pytest.allure.attach(name, self.driver.get_screenshot_as_png(), type=AttachmentType.PNG)
pytest 以上
uinttest 写个 装饰器
game over
我的做法是把断言方法封装一下,例如 verify(button.title, 'register')
如果 button.title == register, 测试通过,然后截图,保存到正常截图的目录,作为测试执行成功的记录;
如果 button.title != register, 测试失败, 并且截图保存到失败的目录,方便检查执行失败的记录。
另外如果执行过程中出错(不是断言,而是其他执行的步骤,如找不到元素),也字段截图保存。
如何封装断言,可以参考下面的帖子:
https://testerhome.com/topics/8883
成功了也截图,是有时候执行后需要看对应的结果,如果你不需要就不用截了
try:
self.assertTrue(self.driver.find_element_by_name(u'xxxxxx'))
except Exception as msg:
print (msg)
public.screenshot("error.png")
1.这个帖子我有看过,如果你说的是 try 捕获异常截图,这样的话断言失败截图功能实现了,但是这条用例显示是 pass
2.这个帖子下面有个装饰器,不知道大佬是否研究过,搞了半天没搞定装饰器的用法。我用的是 python3
def verify(a, b):
if a == b :
result = 1
else :
result = 0
driver.screenshot("fail.png")
类似这样就可以了, 就是看你想要什么时候去做截图(上面 try 的例子是异常截图, 我的例子是验证失败的时候截图)
try:
self.assertTrue(self.driver.find_element_by_name(u'xxxxxx'))
except Exception as msg:
public.screenshot("error.png")
raise msg // 抛出异常这个用例就不会pass了
如果想要不管成功还是失败都截图,
try:
self.assertTrue(self.driver.find_element_by_name(u'xxxxxx'))
except Exception as msg:
raise msg // 抛出异常这个用例就不会pass了
finally:
public.screenshot("error.png")
装饰器还是方便些
def tearDown(self):
result = self.defaultTestResult()
self._feedErrorsToResult(result, self._outcome.errors)
error = self.list2reason(result.errors)
failure = self.list2reason(result.failures)
ok = not error and not failure
if not ok:
BasePage.Action(self.driver).save_screenshot()
self.driver.quit()
def list2reason(self, exc_list):
if exc_list and exc_list[-1][0] is self:
return exc_list[-1][1]
这个方法我试过,不是我想要的。 我在其他地方找到了 #11 方法,试用了下还可以。
接下来还是要研究装饰器
嗯,我这里只是帮你解决你上面这样 try except 截图实现问题,teardown 也有问题,你每次都退出服务,也就是说每个用例都是单独的,如果我想不管成功失败,都继续执行的话,你这样写也是有问题的,可以考虑 teardownClass
我用的 pytest 框架,可以配置失败截图,网上可以找到
pytest.allure.attach(name, self.driver.get_screenshot_as_png(), type=AttachmentType.PNG)
话题终止