APP自动化-异常截图-利用内存空间(class)

发布时间 2023-05-16 19:40:03作者: 琉璃星眸

根据 APP自动化-异常截图-利用内存空间(list),这里还可以使用类的方法。

在Package目录下建立一个什么情况下可以操作内存空间.py的文件,里面建立一个类

class Comtext:  # 类名可以随便定义
    pass

 然后在conftest1中设置引入类,然后使用python内置函数 setattr函数映射

import pytest

from appium.webdriver import Remote  # 导入远程包
from appium.webdriver.common.appiumby import AppiumBy as By  # 引用appium的驱动常规AppiumBy 引入By模块,别名为BY
from selenium.webdriver.support.wait import WebDriverWait  # 引入Selenium的WebDriverWait服务
from selenium.webdriver.support import expected_conditions as EC  # 引入Selenium的expected_conditions服务别名为ec
from appium.webdriver.common.touch_action import TouchAction  # 引入触摸事件方法导包为TouchAction


@pytest.fixture()  # pytest夹具使用,pytest中构建供用例使用的数据
def driver():
    caps = {}
    caps["platformName"] = "Android"
    caps["appium:deviceName"] = "emulator-5554"
    caps["appium:platformVersion"] = "7.1.2"
    caps["appium:appPackage"] = "com.zhao.myreader"
    caps["appium:appActivity"] = "com.zhao.myreader.ui.home.MainActivity"
    caps["appium:notReset"] = "True"

    url = "127.0.0.1:4723/wd/hub"

    # global driver                       # 第一种,使用提升作用域完成
    # from Package.什么情况下可以操作内存空间 import list1
    #
    # driver1 = Remote(url, caps)
    # list1.append(driver1)
    from Package.什么情况下可以操作内存空间 import Comtext  # 引入类

    driver1 = Remote(url, caps)
    setattr(Comtext, "driver", driver1)    # setattr是python的内置函数,可以向一个类,进行外部的内容定义和设置,python的反射机制
    # 设置Comtext这个类,的属性是"driver",值是driver1

wait = WebDriverWait(driver1, 2) return driver1, wait @pytest.fixture() # pytest夹具使用,pytest中构建供用例使用的数据 def by(): return By # 这里的By是上面引入的AppiumBy包,为了避免循环递归,函数改为小写by @pytest.fixture() # pytest夹具使用,pytest中构建供用例使用的数据 def ec(): return EC # 这里的By是上面引入的expected_conditions AS EC包,为了避免循环递归,函数改为小写by

 然后去conftest-2中去引入类

import pytest


# 以下是pytest提供异常截图的方法
@pytest.hookimpl(hookwrapper=True)  # 写死的
def pytest_runtest_makereport(item, call):  # 写死的
    # pytest会将找到的用例存在迭代器中
    outcome = yield  # 通过这个方法接受所有用例的结果
    result = outcome.get_result()
    # print("用例的标识数据:", result)
    if result.when == "call":
        print("用例的执行结果:", result)
        if result.outcome == "failed":
            """进行截图"""
            # from Package.什么情况下可以操作内存空间 import list1
            # driver1 = list1[-1]
            from Package.什么情况下可以操作内存空间 import Comtext
            driver1 = getattr(Comtext, "driver")  # 去类中拿属性
            driver1.save_screenshot("异常截图11.png")  #

然后运行,运行完进行异常截图