一、日志作用

  • 调试程序
  • 了解系统程序运行的情况,是否正常
  • 系统程序运行故障分析与问题定位
  • 用来做用户行为分析和数据统计

二、为项目添加日志

└── utils
├── log_utils.py
└── se_utils.py

log_utils.py

import logging.handlers
import time class GetLogger():
logger = None @classmethod
def get_logger(cls):
if cls.logger == None:
# 日志器实例
cls.logger = logging.getLogger() # 设置日志级别
cls.logger .setLevel(level=logging.INFO) # 控制台处理器实例
ch = logging.StreamHandler() # 以时间切分日志文件处理器
filename = '../logs' + '/' + time.strftime('%Y%m%d') + 'WebUiTestLog.log'
th = logging.handlers.TimedRotatingFileHandler(filename=filename, when='midnight', interval=1,
backupCount=30, encoding='utf-8') # 设置日志格式
fmt = "%(asctime)s %(levelname)s [%(name)s] [filename: %(filename)s - moudle: %(module)s - func: %(funcName)s %(lineno)d line] - %(message)s"
fm = logging.Formatter(fmt) # 将日志格式添加到处理器
ch.setFormatter(fm)
th.setFormatter(fm) # 将处理器添加到日志器
cls.logger .addHandler(ch)
cls.logger .addHandler(th)
return cls.logger

se_utils.py 添加浏览器启动和关闭的日志

from selenium import webdriver

from utils.log_utils import GetLogger

logger = GetLogger.get_logger()

class Driver():
_driver = None @classmethod
def get_driver(cls, browser_name='Chrome'):
if cls._driver == None:
logger.info('正在打开浏览器.....')
if browser_name == 'Chrome':
cls._driver = webdriver.Chrome()
elif browser_name == 'Firefox':
cls._driver = webdriver.Firefox()
elif browser_name == 'Safari':
cls._driver == webdriver.Safari()
elif browser_name == 'Opera':
cls._driver == webdriver.Opera()
elif browser_name == 'edge':
cls._driver == webdriver.Edge()
elif browser_name == 'Ie':
cls._driver == webdriver.Ie()
else:
raise NameError(
"Not found %s browser,You can enter 'Chrome', 'Firefox', 'Ie', 'Edge', 'Safari',Opera" % browser_name)
logger.info('打开{}浏览器'.format(cls._driver.name)) return cls._driver @classmethod
def quit_driver(cls):
if cls._driver:
logger.info('正在关闭{}浏览器'.format(cls._driver.name))
cls._driver.quit()
logger.info('已关闭{}浏览器'.format(cls._driver.name)) cls._driver = None

base_page.py 添加定位信息的日志

    def find_element(self, locator):
try:
WebDriverWait(driver=self.driver, timeout=TIMEOUT, poll_frequency=POLL_FREQUENCY).until(
EC.visibility_of_element_located(locator))
return self.driver.find_element(*locator)
except Exception as e:
msg = "元素定位超时 {}: {}".format(locator[0], locator[-1])
logger.error(msg)
raise TimeoutException(msg)

更多日志信息请根据例子麻烦自行添加

Web自动化测试项目(七)日志的更多相关文章

  1. Web自动化测试项目搭建目录

    Web自动化测试项目搭建(一) 需求与设计 Web自动化测试项目(二)BasePage实现 Web自动化测试项目(三)用例的组织与运行 Web自动化测试项目(四)测试报告 Web自动化测试项目(五)测 ...

  2. Web自动化测试项目(四)测试报告

    测试报告生成 使用HTMLTestRunner 生成测试报告 本文使用的 HTMLTestRunner 来源于github: https://github.com/githublitao/HTMLTe ...

  3. Web自动化测试项目(五)测试结果通知

    一.邮件通知 使用第三方邮件发送库yagmail github地址:https://github.com/kootenpv/yagmail 安装 pip3 install yagmail demo.p ...

  4. Web自动化测试项目(二)BasePage实现

    一.BasePage介绍 创建一个BasePage类,对Selenium Api进行二次封装 为了快速创建项目并投产,用到的Selenium Api才进行封装,没用到的则不封装 优先封装最重要的几个方 ...

  5. Web自动化测试项目搭建(一) 需求与设计

    一.项目需求 测试/生产环境更新后,自动化回归测试 项目易于维护和运行 支持多种测试策略 支持可视化测试报告 运行结果,支持多种方式通知相关人员 可定时/触发的方式运行自动化测试用例 二.设计 2.1 ...

  6. Web自动化测试项目(六)多环境执行

    需求 使用命令行运行脚本,可以指定测试/预发布/生产环境的url,如果找不到该环境变量则默认为测试环境 python3 xxxxxx.py test 修改constants.py # DOMAIN = ...

  7. Web自动化测试项目(三)用例的组织与运行

    一.Unittest用例组织 在test_case目录下创建test*.py,组织测试用例 ├── test_case │   ├── __init__.py │   └── test_login.p ...

  8. 怎样才能做好软件测试——Python自动化测试工程师七年感悟

    即使不想在文章的开头过分的正经严肃,但这是一个十分正经技术类规划类的分享.不讲笑话也不讲故事,直接进入主题. 如何学好软件测试?反推一下作为一名优秀的软件测试工程师需要什么能力.   学习测试讲究实践 ...

  9. 20、什么样的项目适合Web自动化测试

    1.什么是Web自动化测试?概念:让程序代替人为自动验证Web项目功能的过程 2.什么Web项目适合做自动化测试 1.需求变动不频繁 2.项目周期长 3.项目需要回归测试 3.如阿进行Web自动化测试 ...

随机推荐

  1. Struts2 注释类型

    Struts 2 应用程序可以使用Java5注释作为替代XML和Java属性配置.这里是清单的不同的类别有关的最重要的注解: 命名空间注释(动作注释): @ Namespace注释允许在Action类 ...

  2. 16.MindManager整理交互思路

    点住主题同时按ins键可以插入一个支节点 右键主题选择下方的排列图表 可以选择排列方式 按住主题同时ctr+v就会粘帖成一个子主题 文本也可以复制黏贴 主题内容可以直接选择拖动更改结构 选择主题框上的 ...

  3. 《提升能力,涨薪可待》-Java并发之AQS全面详解

    欢迎关注公众号[Ccww笔记],原创技术文章第一时间推出 一.AQS是什么?有什么用? AQS全称AbstractQueuedSynchronizer,即抽象的队列同步器,是一种用来构建锁和同步器的框 ...

  4. Selenium3+Python3环境搭建

    安装python 官网直接下载当前最新版的python Python官网地址:https://www.python.org/ 百度搜索Python3.6安装步骤 Python安装步骤:自行百度,暂不提 ...

  5. 003 ansible部署ceph集群

    介绍:在上一次的deploy部署ceph,虽然出了结果,最后的结果并没有满足最初的目的,现在尝试使用ansible部署一遍,看是否会有问题 一.环境准备 ceph1充当部署节点,ceph2,ceph3 ...

  6. iptables匹配端口范围,映射,网络状态

    ####匹配端口范围:iptables -I INPUT -p tcp -m multiport --dport 21,22,23,24 -j ACCEPT <==次选iptables -I I ...

  7. org.apache.subversion.javahl.ClientException: Item is not readable 解决办法

    在使用eclise安装的插件subclipse查看svn的提交历史记录的时候,提示org.apache.subversion.javahl.ClientException: Item is not r ...

  8. Python 超级玛丽代码实现:人物行走和碰撞检测

    功能介绍 人物行走 人物的行走速度这边分成水平方向(X轴)和竖直方向(Y轴),水平方向的速度要考虑加速度和摩擦力,竖直方向的速度要考虑重力加速度. 水平方向:设定X轴向右走的速度为大于0,向左走的速度 ...

  9. Javascript小白经典题型(一)

    1. 输出是什么? function sayHi() { console.log(name) console.log(age) var name = 'Lydia' let age = 21 } sa ...

  10. git submodule 管理子项目

    使用场景 拆分项目,当项目越来越大之后,我们希望 子模块 可以单独管理,并由 专门 的人去维护,这个时候只可以使用 git submodule 去完成. 常用命令 git clone <repo ...