allure报告添加用例失败截图
前言
使用uiautomator2做app自动化测试时,希望可以在用户失败时自动添加失败截图。pytest 有个很好的钩子函数 pytest_runtest_makereport 可以获取到用例执行的结果,所以我们在这个钩子函数里面判断用例失败后截图就可以。
allure报告添加截图可以使用 allure.attach 方法
钩子函数
在 conftest.py 文件写用例执行的钩子函数
driver = None # 定义一个全局driver对象
devices = [d.serial for d in adbutils.adb.device_list()]
@pytest.hookimpl(tryfirst=True, hookwrapper=True)
def pytest_runtest_makereport(item, call):
# 什么时候去识别用例的执行结果呢?
# 后置处理 yield:表示测试用例执行完了
outcome = yield
rep = outcome.get_result() # 获取测试用例执行完成之后的结果
if rep.when == 'call' and rep.failed: # 判断用例执行情况:被调用并且失败
# 实现失败截图并添加到allure附件。截图方法需要使用driver对象,想办法把driver传过来
# 如果操作步骤过程中有异常,那么用例失败,在这里完成截图操作
img = driver.screenshot(format='raw')
# 将截图展示在allure测试报告上
allure.attach(img, '断言失败截图', allure.attachment_type.PNG)
自定义实现fixture
# 自定义fixture实现driver初始化及赋值并且返回
@pytest.fixture(scope='session', autouse=True)
def init_driver():
global driver # global变量,相当于给上面driver = None赋值了
if driver is None:
driver = u2.connect(devices[0])
return driver
用例中使用
conftest.py 不用导入,pytest在执行用例时会自动化查找。自定义实现的init_driver函数作为参数传入用例方法中。
@allure.feature('咨询模块')
class TestConsulting:
def setup_class(self):
self.driver = u2.connect(devices[0])
GetUtils.pop_up_monitor(self.driver)
self.driver.app_start(page.USER_PACKAGE_NAME)
self.ul = ConsultingService(self.driver)
@pytest.mark.run(order=31)
@pytest.mark.parametrize("name", ["xx"])
@allure.story("xxx")
def test_consulting_service(self, init_driver, name):
with allure.step("xxxx"):
self.ul.psychological_counseling()
标签:截图,self,driver,pytest,用例,allure
From: https://www.cnblogs.com/istart/p/16992557.html