AirtestProject / AirtestProject/Airtest

关于airtest report的问题

Abierto
#1,169 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Python
Estrellas
9.6k
Forks
1.5k
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

(请尽量按照下面提示内容填写,有助于我们快速定位和解决问题,感谢配合。否则直接关闭。)

**(重要!问题分类)**
* 测试开发环境AirtestIDE使用问题 -> https://github.com/AirtestProject/AirtestIDE/issues
* 控件识别、树状结构、poco库报错 -> https://github.com/AirtestProject/Poco/issues
* 图像识别、设备控制相关问题 -> 按下面的步骤

**描述问题bug**
(简洁清晰得概括一下遇到的问题是什么。或者是报错的traceback信息。)
main.py 以及 GGame.py二个脚本,运行启动的时候的main.py调用GGame.py。正常运行结束后,使用LogToHtml生成log.html。
发现在报告中看不到click()swipe()等步骤的记录,如果单独运行GGame.py就能看到?请问怎么处理呢?
其中click()均自己二次封装;
def lockClick(element):
try:
local_t.acquire() # 上一个钥匙锁
element.wait_for_appearance(timeout=300)
element.click()
local_t.release()
except RpcTimeoutError as e:
logger.debug(f'========== 设备:{dev_name}//{device_id} + RpcTimeoutError Error:{e} ==========')
log(e)
logger.debug(f'========== 设备:{dev_name}//{device_id} + lockClick reconnect. ==========')
a = RpcClient(RpcAgent)
a.on_connect()
if element.exists():
lockClick(element)
local_t.release()

main.py
import GGame
from airtest.core.api import *
from airtest.cli.runner import AirtestCase
import airtest.report.report as air_rpt # 生成airtest 报告的库 命令airtest reprot -h
from airtest.core.helper import log # 生成airtest 日志
from poco.exceptions import *
from loguru import logger # 输出日志 路径等
from airtest.core.android.adb import * # adb命令的使用
from airtest.core.android.constant import CAP_METHOD, ORI_METHOD #图像识别

def generate_airtest_report():
'''
此方法主要作用:生成Airtest自动化测试的报告,它会将报告保存为HTML文件,并记录一些与生成报告相关的日志消息。
'''
logger.debug(f'========== 设备:{dev_name}//{device_id} + start generating auto test reports. ==========')
dir = os.path.dirname(__file__) # 操作系统路径目录
script_name = os.path.basename(__file__) # 操作系统路径基名称
outputfile = os.path.join(log_dir, air_rpt.HTML_FILE) # 用于路径拼接文件路径
logfile = os.path.join(log_dir, air_rpt.DEFAULT_LOG_FILE) # 用于路径拼接文件路径
rpt = air_rpt.LogToHtml(dir, log_dir, script_name=script_name, logfile=logfile, lang='zh', plugins=["poco.utils.airtest.report",'airtest_selenium.report']) # 全局变量指定日志路径
rpt.report(output_file=outputfile) # 报告

def run(pkg_path: str, pkg_name: str, target_device, log_dir, task_id, pro_name, device_id, device_ip, dev_name):
auto_setup(__file__, logdir=log_dir)
logger.debug(f'========== 设备:{dev_name}//{device_id} + Enter [run] func. ==========')
GGame.Run

generate_airtest_report()

GGame.py
def WaitForTestSeccess(testFunc, parms, loginfo):
'''
此函数的作用就是等待测试函数执行完毕
:param testFunc: 需要等待执行的测试函数
:param parms: 相应的参数,默认None
:param loginfo: 函数执行完毕后,需要输出的info信息
:return:
'''
while not testFunc(parms):
pass
logger.debug(loginfo)

def lockClick(element):
try:
local_t.acquire() # 上一个钥匙锁
element.wait_for_appearance(timeout=300)
element.click()
local_t.release()
except RpcTimeoutError as e:
logger.debug(f'========== 设备:{dev_name}//{device_id} + RpcTimeoutError Error:{e} ==========')
log(e)
logger.debug(f'========== 设备:{dev_name}//{device_id} + lockClick reconnect. ==========')
a = RpcClient(RpcAgent)
a.on_connect()
if element.exists():
lockClick(element)
local_t.release()

XXXX
XXXX

def Run():
'''
此方法主要作用:写一个run方法,方便调用其他方法
:return:
'''
# WaitForTestSeccess(prepare,None,'准备完成')
# sleep(1)
# WaitForTestSeccess(permission,None,"权限授予完成")
# sleep(1)
# WaitForTestSeccess(new_prologue,None,'跳过新手序章')
# sleep(1)
WaitForTestSeccess(use_account_login, None, f'========== 设备:{dev_name}//{device_id} + Login test is completed. ==========')
sleep(1)
# WaitForTestSeccess(enter_training_stage,None,'---------------- 新手训练关结束 ----------------')
# sleep(1)
# WaitForTestSeccess(hallactivity,None,'----------------大厅活动关闭----------------')
# sleep(1)
WaitForTestSeccess(battle, None, f'========== 设备:{dev_name}//{device_id} + The battle has ended. ==========')
sleep(1)
logger.debug(f'========== 设备:{dev_name}//{device_id} + Automated testing has finished. + {pkg_name}. ==========')
return True
```

**相关截图**
(贴出遇到问题时的截图内容,如果有的话)
(在AirtestIDE里产生的图像和设备相关的问题,请贴一些AirtestIDE控制台黑窗口相关报错信息)
直接运行GGame.py脚本,生成的log.html,可以看到各种步骤,截图如下:有各种步骤,步骤点击的地方也有红色圆圈标注
![image](https://github.com/AirtestProject/Airtest/assets/44158825/2d14a271-79d5-4a1f-8fed-20ad8d27061a)

运行main.py脚本来调用GGame.py脚本,生成的log.html只有sleep步骤了。截图如下:
![image](https://github.com/AirtestProject/Airtest/assets/44158825/c99cee40-c015-4aaf-94be-520a8932915b)

**复现步骤**
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**预期效果**
希望log.html可以显示如click()等方法的各种步骤,其中步骤点击截图也需要有红色圆圈标注位置。和直接运行GGame生成的log.html最好一样的好看。
然后log.html的报告,报告地址给其他人也能远程查看

**python 版本:** `python 3.9.11`

**airtest 版本:** `1.3.1`
> airtest版本通过`pip freeze`可以命令可以查到

**设备:**
- 型号: [Xiaomi 12]
- 系统: [ Android 12.0]
- (别的信息)

**其他相关环境信息**
在Win 11系统上运行

如需要具体script,联系邮箱:luohui1993@163.com。辛苦各位程序组大佬

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.