zoukankan      html  css  js  c++  java
  • selenium-日志文件的使用(十二)

    概述

      在自动化测试中,如果测试失败需要对错误的错误的代码或者测试case进行分析,进行分析时最好的方法是在项目中添加日志文件,通过日志文件的分析定位出现错误的原因。

      这样可以保持自动化测试用例的健壮性,异常的捕获及处理

    思路

      将生成日志文件封装,然后在执行用例时调用

      生成的结果日志文件进行统一管理

    生成日志文件

     1 # coding=utf-8
     2 
     3 import logging
     4 import datetime
     5 import os
     6 
     7 
     8 class AutoTestLog:
     9    def __init__(self):
    10        self.logger = logging.getLogger() # 创建一个logger
    11        self.logger.setLevel(logging.DEBUG) #指定日志级别
    12 
    13        # 以时间命名log文件名
    14        base_path = os.path.dirname(os.path.abspath(__file__)) # 当前文件路径
    15        log_path = base_path + '/../logs/' # log文件路径
    16        file_name = datetime.datetime.now().strftime("%y-%m-%d %H:%M") + '.log' #以时间命名文件名
    17        log_name = log_path + file_name # log文件名
    18 
    19        # 将日志写入磁盘
    20        self.file_handle = logging.FileHandler(log_name,'a',encoding='utf-8')
    21        self.file_handle.setLevel(logging.DEBUG)
    22        """
    23        设置日志格式
    24            %(asctime)s         日志事件发生的时间
    25            %(filename)s        pathname的文件名部分,包含文件后缀
    26            %(funcName)s        调用日志记录函数的函数名
    27            %(levelname)s       该日志记录的文字形式的日志级别('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL')
    28            %(message)s         日志记录的文本内容
    29        """
    30        file_formatter = logging.Formatter('%(asctime)s - %(filename)s - %(funcName)s - %(levelname)s - %(message)s')
    31        self.file_handle.setFormatter(file_formatter)
    32        # 给logger添加handler
    33        self.logger.addHandler(self.file_handle)
    34 
    35    def get_log(self):
    36        return self.logger
    37 
    38     # 关闭handle
    39    def close_handle(self):
    40        self.logger.removeHandler(self.file_handle)
    41        self.file_handle.close()

    进行简单的封装

    对于封装的可以进行简单的验证

    在执行时添加打印message即可,如下

    1 if __name__ == '__main__':
    2    AutoTest = AutoTestLog()
    3    log = AutoTest.get_log()
    4    log.debug('test')
    5    AutoTest.close_handle()

    将封装的日志文件进行使用

    将上面封装的函数导入case文件,然后将生成的日志文件单独存放,进行统一管理

    以百度首页跳转链接case为例

     1 from auto_learning.log.AutoTestLog import AutoTestLog
     2 import unittest
     3 from selenium import webdriver
     4 import time
     5 
     6 
     7 class TestCase(unittest.TestCase):
     8    @classmethod
     9    def setUpClass(cls):
    10        cls.log = AutoTestLog()
    11        cls.logger = cls.log.get_log()
    12 
    13    @classmethod
    14    def tearDownClass(cls):
    15        cls.log.close_handle()
    16 
    17    def setUp(self):
    18        self.logger.info("--start test --")
    19        base_url = 'https://www.baidu.com'
    20        self.driver = webdriver.Chrome()
    21        self.driver.implicitly_wait(10)
    22        self.driver.get(base_url)
    23 
    24    def tearDown(self):
    25        self.driver.close()
    26        self.driver.quit()
    27        self.logger.info("--test end--")
    28 
    29    def test_baidu_news(self):
    30        u"""百度新闻"""
    31        driver = self.driver
    32        driver.find_element_by_link_text('新闻').click()
    33        time.sleep(1)
    34        self.assertIn(driver.title, u'百度新闻——全球最大的中文新闻平台')
    35 
    36    def test_baidu_hao123(self):
    37        u"""hao123"""
    38        driver = self.driver
    39        driver.find_element_by_link_text('hao123').click()
    40        time.sleep(1)
    41        self.assertEqual(driver.title, u'hao123_上网从这里开始')
    42 
    43    def test_baidu_tieba(self):
    44        u"""百度贴吧"""
    45        driver = self.driver
    46        driver.find_element_by_link_text('贴吧').click()
    47        time.sleep(1)
    48        # 错误的断言
    49        self.assertTrue(driver.find_element_by_link_text('全吧搜索+1'))
    50 
    51 
    52 if __name__ == '__main__':
    53    unittest.main()

    运行后生成的log文件

    原文发布在 软件羊皮卷 微信公众号中,欢迎大家关注

  • 相关阅读:
    Spring sprint @ ninth day
    微软面试:找水王问题
    Spring sprint @ first day
    软件工程概论 购书最低价格问题
    网络助手的NABCD分析
    记初学net-SNMP
    求二维数组联通子数组和的最大值 (联通涂色) beta!
    二维数组环状最大子矩阵
    一维数组中的最大子数组(环状)
    图书助手冲刺第七天
  • 原文地址:https://www.cnblogs.com/tynam/p/10388636.html
Copyright © 2011-2022 走看看