首页 > 其他分享 >pytest+allure报告添加用例失败截图

pytest+allure报告添加用例失败截图

时间:2022-12-19 16:55:59浏览次数:37  
标签:截图 self driver pytest 用例 allure

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

相关文章

  • pytest框架的简介
    概念:是一款基于python语言的单元测试框架用途:用于发现测试用例、执行测试用例、判断测试结果、生成测试报告的一款框架测试用例的规则:文件夹必须以test开头或者结尾.py......
  • 【Pytest--html报告优化+增加错误截图,获取统计数据】
    一、pytest生成的原始html报告1、在我们实际工作中,环境信息不一定要在报告中详细提现,可以增减2、用例信息,默认展示的是用例的model名::用例名称,并不直观,所以我们可以增加一......
  • 2)leader选举用例
    1)流程  2)变为leader调用栈 ......
  • 【Python自动化框架pytest(三)--数据驱动(参数化)】
    参数化,就是把测试过程中的数据提取出来,通过参数传递不同的数据来驱动用例运行。其实也就是数据驱动的概念。在Unittest中,我们讲过使用ddt库配合unittest实现数据驱动......
  • 【Python自动化框架pytest(四)--其他】
    一、pytest中的skip和xfailskip跳过测试函数skip意味着您希望只有在满足某些条件时测试才能通过,否则pytest应该跳过运行测试。常见的例子是跳过非Windows平台上的仅限Wind......
  • pytest + yaml 框架 -17.文件上传功能
    前言本插件集成了requests_toolbelt插件处理Content-Type:multipart/form-data类型文件上传接口。文件上传multipart/form-data用fiddler抓包,查看抓到的接口,以下这......
  • pytest框架
    在pytest框架中,有如下约束:所有的单测文件名都需要满足test_*.py格式或*_test.py格式。在单测文件中,测试类以Test开头,并且不能带有init方法(注意:定义class时,需要以T开头,......
  • pytest和unittest的区别
    1、安装pytest是第三方库,需要安装;unittest是python中自带的框架2、用例编写规则unittest提供了testcases、testsuites、testfixtures、testrunner相关的类,让测试更加明......
  • 功能测试用例的编写思路及流程
    功能测试用例的编写需要按照一定的思路进行,而不是想到哪写到哪,一般测试机制成熟的公司都会有公司自己自定义的测试用例模板,以及一整套的测试流程关注点,测试人员在测试......
  • pytest + yaml 框架 -16.提供一个常用的内置函数和方法生成随机测试数据
    前言在测试的过程中经常会用到一些随机值,比如生成随机手机号,随机身份证,姓名等数据。内置方法目前暂时提供了3个内置函数,和1个内置对象current_time(f:str='%Y-%m-%......