【13】Selenium+Python UI自动化测试 集成日志(某积载系统实例-07)

发布于:2025-02-11 ⋅ 阅读:(34) ⋅ 点赞:(0)

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文件夹下 生成了日志文件
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到