python自动保存图片_python+unittest自动保存截图

自动化测试过程,针对失败的用例,我们有时候需要保存截图,或者想要在html测试报告中体现截图,如何实现呢?

这里先说说我的思路:利用webdriver下的截图方法实现自动截图,然后再对该方法进行封装

首先,selenium中的webdriver提供了三种保存截图的方法

1、driver.get_screenshot_as_file(filename)

将截图保存为文件,filename为要保存的文件路径和文件名

2、driver.get_screenshot_as_base64()

将截图保存为base64编码格式,供后面html报告中使用

3、driver.get_screenshot_as_png()

将截图保存为二进制形式,用到的好像很少

这里我只针对前两种方法做了实践,直接上代码

方法一:保存为文件

截图方法代码:

def save_screen_shot_as_file(self,method_name):

'''这是将截图保存在文件夹中'''

self.img_path =r'C:\Users\PycharmProjects\web自动化\picture'

self.img_name = time.strftime('%Y-%m-%d_%H-%M-%S')+'.png'

self.method_name =method_name

self.driver.get_screenshot_as_file(self.img_path+'\\'+method_name+self.img_name)

基类BasePage.py代码:

#判断是否登陆成功

def check_login_state(self,*locator):

try:

self.driver.find_element(*locator)

return True

except Exception as e:

print("登陆失败:%s" % e)

#添加失败截图,并保存到一定目录下

self.test_name = sys._getframe().f_code.co_name #获取当前调用函数的名字

GetScreen(self.driver).save_screen_shot_as_file(self.test_name)

执行结果:

方法二:保存为base64编码格式

test_login.py代码如下:

@ddt()

class TestCase(unittest.TestCase):

@classmethod

#初始化类

def setUpClass(cls):

cls.driver = webdriver.Chrome()

print("用例开始执行了!")

cls.driver.get("http://www.xxx.com/")

# 窗口最大化

cls.driver.maximize_window()

# 页面添加加载等待时间

cls.driver.implicitly_wait(5)

cls.imgs=[]

@classmethod

#释放资源类

def tearDownClass(cls):

cls.driver.quit()

print("用例执行完毕,退出浏览器!")

#创建保存图片方法

def add_img(self):

self.imgs.append(self.driver.get_screenshot_as_base64())

return True

@data(('15800000001','xxxxxx'))

@unpack

def test_1_login(self,username,password):

t = IndexPage(self.driver)

#登陆链接

t.to_login()

self.driver.implicitly_wait(3)

#输入登陆信息登陆

l =LoginPage(self.driver)

l.login_input(username,password)

self.add_img() #保存截图,供测试报告使用

run_case.py文件代码如下:

class RunSuite():

def run_suite(self):

# 定义读取测试文件的目录

test_case_path = r'C:\Users\PycharmProjects\web自动化\TestCase'

# 定义报告存放目录

report_path = r'C:\Users\PycharmProjects\web自动化\report'

report_file = 'report' + time.strftime("%Y-%m-%d_%H_%M_%S") + '.html'

discover = defaultTestLoader.discover(test_case_path, pattern='test*.py')

with open(report_path + '\\' + report_file, 'wb') as f:

runner = HTMLTestRunner(stream=f, title="网站登陆测试报告", description="登陆用例执行结果", verbosity=1)

runner.run(discover)

if __name__ == '__main__':

run = RunSuite()

run.run_suite()

执行结果:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值