【13】Selenium+Python UI自动化测试 集成日志(某积载系统实例-07)
1、 在utils文件夹下,新增logger.py文件,用于封装日志
代码
logger.py
#!/usr/bin/env python3
# -*-coding:utf-8-*-
# __author__: hunter
import logging
import os
import time
class Logger:
def __init__(self, loggername):
# 创建一个logger
self.logger = logging.getLogger(loggername)
print(self.logger)
self.logger.setLevel(logging.DEBUG)
# 创建一个handler,用于写入文件
rq = time.strftime('%Y%m%d %H-%M-%S', time.localtime(time.time()))
log_path = os.path.abspath('.') + '/logs/' # 指定文件输出路径,注意logs是一个文件夹,
logname = log_path + rq + 'test.log' # 指定输出的日志文件名
fh = logging.FileHandler(logname, encoding='utf-8') # 指定utf-8格式编码,避免输出的日志文本乱码
print(fh)
fh.setLevel(logging.DEBUG)
# 创建一个handler,用于将日志输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
# 定义handler的输出格式
formatter = logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# 给logger添加handler
self.logger.addHandler(fh)
self.logger.addHandler(ch)
def get_log(self):
"""定义一个函数,回调logger实例"""
return self.logger
2、 项目下新增log文件夹,用于存放生成的日志文件
3、 在test_000_login2.py文件中,调用logger,写入日志
test_000_login2.py
import unittest
import time
from selenium import webdriver
from chromedriver_py import binary_path # this will get you the path variable
from selenium.webdriver.common.by import By # 导入 By 模块
from Test.pythonProject.test_selenium_pjz.config import readyaml
from Test.pythonProject.test_selenium_pjz.utils import handle_excel
from Test.pythonProject.test_selenium_pjz.utils.logger import Logger
class TestLogin(unittest.TestCase):
def setUp(self):
self.svc = webdriver.ChromeService(executable_path=binary_path)
self.driver = webdriver.Chrome(service=self.svc)
self.driver.maximize_window()
# 打开登录页
self.driver.get(readyaml.read_yaml("url"))
self.logger = Logger(__name__)
def test_login(self):
try:
rows_count = handle_excel.HandleExcel().get_rows() # 获取Excel行数
for i in range(2, rows_count+1):
#获取excel中 手机号 查找元素方法 元素值
telNumber = handle_excel.HandleExcel().get_value(i, handle_excel.HandleExcel().get_telNumber())
way_value = handle_excel.HandleExcel().get_value(i, handle_excel.HandleExcel().get_way_value())
# 查找登录元素
time.sleep(2)
self.driver.find_element(By.CSS_SELECTOR, way_value).clear()
self.driver.find_element(By.CSS_SELECTOR, way_value).send_keys(telNumber)
self.driver.find_element(By.CSS_SELECTOR,
"button[class='el-button el-button--primary el-button--medium']").click()
time.sleep(5)
# 判断是否登录成功 判断是否跳转到了首页 并将结果写入Excel
index = self.driver.current_url
if index == "http://192.168.0.121:8089/index":
handle_excel.HandleExcel().write_value(i, handle_excel.HandleExcel().get_result(), "登录成功")
print(i)
self.logger.get_log().debug(f"第{i-1}个用例执行成功,手机号为{telNumber}")
else:
handle_excel.HandleExcel().write_value(i, handle_excel.HandleExcel().get_result(), "登录失败")
print(i)
self.logger.get_log().info(f"第{i-1}个用例执行失败,,手机号为{telNumber}")
except Exception as e:
print(e)
pass
handle_excel.HandleExcel().write_value(i, handle_excel.HandleExcel().get_result(), "登录失败")
self.logger.get_log().error(f"第{i-1}个用例执行失败,错误信息为{e}")
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
TestLogin()
4、 执行结果
可以看到,在log文件夹下 生成了日志文件