在做自动化的过程中,大多数执行者都不在旁边,那么如果用例失败了我们通常看报告上的失败信息,但是这样有时候可能不够清楚的判断到底哪里出了错误,我们还可以通过自动截图的功能,判断用例走到哪里出了错误。

截图方法

在自动化中截图方法有几种,我们一个个来看,那种最适合我们。

方法1:get_screensho t_as_file(self,filename)

通过屏幕进行截图保存在对应路径中

def get_screenshot_as_file(self, filename):
"""
将当前窗口的屏幕快照保存到PNG图像文件中。返回
如果有IOError,则为False,否则返回True。使用完整路径
你的文件名。
"""
if not filename.lower().endswith('.png'):
warnings.warn("name used for saved screenshot does not match file "
"type. It should end with a `.png` extension", UserWarning)
png = self.get_screenshot_as_png()
try:
with open(filename, 'wb') as f:
f.write(png)
except IOError:
return False
finally:
del png
return True

上面的源码中提示了我们如何进行使用,那么我们直接通过unittest进行开始操作吧

异常截图

# coding:utf-8
from appium import webdriver
import unittest
import time
class test(unittest.TestCase):
def setUp(self):
desired_caps = {
'platformName': 'Android', # 测试版本
'deviceName': 'emulator-5554', # 设备名
'platformVersion': '5.1.1', # 系统版本
"appPackage": "com.taobao.taobao", # app包名
"appActivity": "com.taobao.tao.welcome.Welcome", # 启动launch Activity
"noReset": True, # 不清空数据
"unicodeKeyboard": True, # 使用Unicode编码方式发送字符串
"resetKeyboard": True, # 键盘隐藏起来
}
self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
def test01(self):
try:
    # 这里写错了定位信息
text = 'text("注册/登录1")'
self.driver.find_element_by_android_uiautomator(text).click()
except Exception as msg:
print('报错信息:%s'%msg)
# 截图
self.driver.get_screenshot_as_file('123.png')
def tearDown(self):
time.sleep(3)
self.driver.quit()
if __name__ == '__main__':
unittest.main()

打开appium进行执行脚本,脚本执行后,查看我们脚本的当前目录,就会发现我们的截图已经成功的保存在当前目录了

方法2:save_screenshot(‘filename')

通过源码我们可以看到调用的还是上门的方法,但是我们一样也可以使用

 def save_screenshot(self, filename):
"""
将当前窗口的屏幕快照保存到PNG图像文件中。返回
如果有IOError,则为False,否则返回True。使用完整路径
你的文件名。
"""
return self.get_screenshot_as_file(filename)

异常截图

# coding:utf-8
from appium import webdriver
import unittest
import time
class test(unittest.TestCase):
def setUp(self):
desired_caps = {
'platformName': 'Android', # 测试版本
'deviceName': 'emulator-5554', # 设备名
'platformVersion': '5.1.1', # 系统版本
"appPackage": "com.taobao.taobao", # app包名
"appActivity": "com.taobao.tao.welcome.Welcome", # 启动launch Activity
"noReset": True, # 不清空数据
"unicodeKeyboard": True, # 使用Unicode编码方式发送字符串
"resetKeyboard": True, # 键盘隐藏起来
}
self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
def test01(self):
try:
text = 'text("注册/登录1")'
self.driver.find_element_by_android_uiautomator(text).click()
except Exception as msg:
print('报错信息:%s'%msg)
# 方法2:
self.driver.save_screenshot('222.png') def tearDown(self):
time.sleep(3)
self.driver.quit()
if __name__ == '__main__':
unittest.main()

同样的执行后,会在当前目录中发现设备已经截图了。

其他的截图方法

# 保存的是base64的方法。一般用在html的时候。

def get_screenshot_as_base64(self):
"""
以base64编码的字符串获取当前窗口的屏幕截图
这是有用的嵌入式图像在HTML。
"""
return self.execute(Command.SCREENSHOT)['value'] # 截图屏幕,以二进制的方法进行保存 def get_screenshot_as_png(self):
"""
以二进制数据的形式获取当前窗口的屏幕截图。
"""
return base64.b64decode(self.get_screenshot_as_base64().encode('ascii'))

总结:unittest的截图大致就是通过抛异常的方法捕捉错误,然后加上截图功能。保存在指定目录中。

如果感觉安静写的对您有所帮助,可以右下角点个关注,点关注,不迷路~~

unittest---unittest错误截图的更多相关文章

  1. unittest框架,漂亮的报告BeautifulReport配置与错误截图详细解说

    1.下载BeautifulReport模块 下载地址:https://github.com/TesterlifeRaymond/BeautifulReport 2.解压与存放路径 下载Beautifu ...

  2. 《selenium2 python 自动化测试实战》(19)——webdriver错误截图

    webdriver 提供错误截图函数 get_screenshot_as_file(),可以帮助我们跟踪 bug,在脚本无法继续执行时候, get_screenshot_as_file()函数将截取当 ...

  3. selenium验证码和错误截图

    验证码的识别: 1,破解验证码 OCR识别(一般使用tesseract-ocr) 人工智能(AI机器学习 TensorFlow,成本大) 2,绕过验证码 1, 让开发人员临时关闭验证码 2,提供万能验 ...

  4. 将QTP运行时的错误截图上传到QC

    Class QCImageErrorCapture Sub Class_Terminate() 'Check if the current test has failed. If failed the ...

  5. unittest===unittest 的几种执行方式

    #demo.py import requests import json class RunMain: def __init__(self, url, method, data=None): self ...

  6. selenium的错误截图

    在自动化测试过程中,测试执行期间需要收集获取截图信息,一方面为了错误调试代码,一方面也为了和开发沟通, 获取当前的截图 save_screenshot是获取当前截图的方法,以百度首页为例,打开百度首页 ...

  7. make[1]: *** [storage/perfschema/unittest/CMakeFiles/pfs_connect_attr-t.dir/all] 错误 2 解决方法

    make[2]: *** [storage/perfschema/unittest/pfs_connect_attr-t] 错误 1 make[1]: *** [storage/perfschema/ ...

  8. python+unittest框架整理(一点点学习前辈们的封装思路,一点点成长。。。)

    预期框架整理目标: 1.单个用例维护在单个.py文件中可单个执行,也可批量生成组件批量执行 2.对定位参数,定位方法,业务功能脚本,用例脚本,用例批量执行脚本,常用常量进行分层独立,各自维护在单独的. ...

  9. selenium+Python(截图保存错误页面)

    异常捕捉与错误截图 创建错误截图文件夹,目录结果如下: 用例不可能每一次运行都成功,肯定运行时候有不成功的时候,关键是我们捕捉到错误,并以把并错误截图保存,这将是一个非常棒的功能,也会给我们错误定位带 ...

随机推荐

  1. umi ui 构建时出现 spawn sh ENOENT 报错的解决方法

    在使用umi可视化界面构建项目的时候,如果出现spawn sh ENOENT错误,一般都是由于环境变量里没有设置git的环境变量导致的.在环境变量的path里加上"C:\Program Fi ...

  2. mybatis中jdbcType与oracle/mysql数据类型对应关系

    Mybatis JdbcType Oracle MySql JdbcType ARRAY     JdbcType BIGINT   BIGINT JdbcType BINARY     JdbcTy ...

  3. keil密钥过期 新注册机 有效期至2032年

    点击下载:keil注册机至2032年

  4. ajax post

    前端 $.post("url",JSON.stringify({ a:a, ... }), function(data){ }, 'json'); 后端 @PostMapping( ...

  5. Vue的响应式原理---(v-model中的双向绑定原理)

    Vue响应式原理 不要认为数据发生改变,界面跟着更新是理所当然. 具体代码实现:https://gitee.com/ahaMOMO/Vue-Responsive-Principle.git 看下图: ...

  6. 每天进步一点点------Allegro手工建立电路板

    手工建立电路板步骤(以某个四层板为例): (1)file---new---board/board wizard来建立.brd电路板文件.设置名称和保存路径后,要设置绘图区域的大小,setup---dr ...

  7. monkey工具使用(未完待续)

    monkey命令详解: 转自:http://blog.csdn.net/jlminghui/article/details/38238443 http://www.cnblogs.com/wfh198 ...

  8. js加密(四)landChina

    1. url:https://www.landchina.com/default.aspx?tabid=226 2. target: 3. 简单分析 3.1 打开fiddler和chorme无痕浏览器 ...

  9. 8.7-Day1T1

    题目大意: T组测试数据,每组测试数据给出一个n,求[0,n-1]所有逆元的和.(n可能不为质数) 题解: 我的想法: 求出每一个数的逆元,再相加.由于有n为质数的时候,所以,我将它分为两种情况:(1 ...

  10. 计算几何-Dot-Vector

    This article is made by Jason-Cow.Welcome to reprint.But please post the article's address. 看了书,然后码 ...