打造自己的自动化测试框架--日志、截图、录屏
一. 使用继承:封装数据驱动框架,包括日志,截图(上传到 allure),录屏
1. 继承、组合
2. 日志
import logging logging.basicConfig(level=logging.INFO) logging.info(f"开始查找元素: args是 {args},kwargs是 {kwargs}")
3. 截图
在base_page里封装截图的方法,然后调用此函数截图,后截的:
def screenshot(self,picture_path): self.driver.save_screenshot(picture_path)
# 截图每个定位的元素,对图片加上时间戳的名称
self.screenshot(str(time.time()) + ".png")
4. 截图并上传到allure
安装allure:
使用allure传附件:
import allure #截图传给allure:先从本地读取图片,再以二进制形式传给allure with open("./tmp.png",'rb') as f: picture = f.read() allure.attach(picture, attachment_type=allure.attachment_type.PNG )
#错误的传法是:不按二进制传,到时传进去的图片无法打开
#allure.attach("./tmp.png", attachment_type=allure.attachment_type.PNG)
在terminal中运行allure:
切换目录,进入用例层: cd test_frame/testcase
使用pytest运行allure生成报告,并保存在上一级目录下的report目录里: pytest test_search.py --alluredir ../report
打开allure: allure serve ./report
在suites里可以看到附件图片
5. 录屏
5.1 依赖driver录制:初始化driver后才可以录制
self.driver.start_recording_screen("../video.mp4")
原生app录屏,需要adb权限,不方便使用
5.2 第三方工具
使用工具srcpy,本质是投屏软件:
下载地址:https://github.com/Genymobile/scrcpy, zip压缩包下载下来解压,然后设置exe文件的环境变量path
录制方法一: 在cmd里录制: scrcpy --record file.mp4
就开始录制,录制完后点ctrl+C,停止录制
录制方法二: 使用脚本写,在conftest.ini里加fixture:
import subprocess #python的特性,可调命令行,也可用os
import signal
shell=true:将命令自动按空格切割
stdout 标准输出
stderr 错误输出
os.kill 关闭录屏:pid进程号, signal信号