AirtestProject / AirtestProject/Airtest
关于airtest report的问题
- 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,可以看到各种步骤,截图如下:有各种步骤,步骤点击的地方也有红色圆圈标注

运行main.py脚本来调用GGame.py脚本,生成的log.html只有sleep步骤了。截图如下:

**复现步骤**
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.