国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

史上最細,自動化測試-logging日志采集詳細實戰(zhàn)(二)

這篇具有很好參考價值的文章主要介紹了史上最細,自動化測試-logging日志采集詳細實戰(zhàn)(二)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


前言

1、測試場景

給登錄今日頭條app的操作添加日志采集。

2、簡單配置代碼示例

import logging
from appium import webdriver

logging.basicConfig(filename='./testLog.log', level=logging.INFO, 
                    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')

def android_driver():
    desired_caps = {
        "platformName": "Android",
        "platformVersion": "10",
        "deviceName": "PCT_AL10",
        "appPackage": "com.ss.android.article.news",
        "appActivity": ".activity.MainActivity",
        "unicodeKeyboard": True,
        "resetKeyboard": True,
        "noReset": True,
    }
    logging.info("啟動今日頭條APP...")
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
    return driver

def login_opera(driver):
    '''登錄今日頭條操作'''
    logging.info("開始登陸今日頭條APP...")
    try:
        driver.find_element_by_id("com.ss.android.article.news:id/cji").click() # 點擊【我知道了】
        driver.find_element_by_id("android:id/button1").click() # 點擊權(quán)限管理-確定按鈕
        driver.find_element_by_xpath("http://android.widget.TabWidget/android.widget.RelativeLayout[@index=3]").click() # 點擊未登錄
        driver.find_element_by_id("com.ss.android.article.news:id/a10").click() # 未登錄頁點擊登錄按鈕
        driver.find_element_by_id("com.ss.android.article.news:id/bgh").click() # 登錄頁點擊“。。?!?/span>
        driver.find_element_by_xpath("http://android.widget.LinearLayout[@index=4]").click() # 選擇密碼登錄
        driver.find_element_by_id("com.ss.android.article.news:id/bu").send_keys("xxxxxxx")   # 輸入賬號
        driver.find_element_by_id("com.ss.android.article.news:id/c5").send_keys("xxxxxxx")   # 輸入密碼
        driver.find_element_by_id("com.ss.android.article.news:id/a2o").click() # 點擊登錄
    except Exception as e:
        logging.error("登錄錯誤,原因為:{}".format(e))
    else:
        logging.info("登陸成功...")

driver = android_driver()
login_opera(driver)

登錄成功則日志輸出如下:

2023-08-09 18:20:05,119 logging_test.py[line:21] INFO 啟動今日頭條APP...
2023-08-09 18:20:10,119 logging_test.py[line:27] INFO 開始登陸今日頭條APP...
2023-08-09 18:21:07,120 logging_test.py[line:41] INFO 登陸成功...

3、拋出問題

上面示例代碼成功地獲取了日志信息,但這種寫法只能作用于當(dāng)前模塊。而一個自動化測試項目往往有多個模塊,如果在每個需要獲取日志的模塊都使用這樣的方式,顯然是不方便維護的。那么我們需要怎么解決呢?

4、解決思路

使用日志流處理流程。提供以下兩種思路:

思路1:使用python代碼實現(xiàn)日志配置。先創(chuàng)建日志記錄器,并設(shè)置好Handler與日志格式,如上面的logging_test.py模塊構(gòu)造logger,其他模塊采集日志時直接調(diào)用。

思路2:將日志的格式、輸出路徑等參數(shù)抽離出來放置在專門的配置文件里,如logging.conf,使用專門的模塊處理,使用時直接在模塊調(diào)用即可。

5、思路1——使用python代碼實現(xiàn)日志配置示例

目錄結(jié)構(gòu)

史上最細,自動化測試-logging日志采集詳細實戰(zhàn)(二),接口自動化,軟件測試,自動化測試,軟件測試,自動化測試,軟件測試工程師,python自動化測試,接口自動化測試,接口自動化,logging

test.py中需要采集日志時,從logging_test.py導(dǎo)入logger即可。也可以將logging_test.py里的代碼進行進一步的封裝,再調(diào)用,這里僅僅只是示例。

logging_test.py

import logging

# 創(chuàng)建日志記錄器
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)

# 設(shè)置日志輸出格式
format= logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')

# 創(chuàng)建一個Handler用于將日志寫入文件
logFile = './log.txt'
fh = logging.FileHandler(logFile, mode='a', encoding='utf-8')
fh.setLevel(logging.INFO)
fh.setFormatter(format)
logger.addHandler(fh)

# 同樣的,創(chuàng)建一個Handler用于控制臺輸出日志
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
ch.setFormatter(format)
logger.addHandler(ch)

test.py

from appium import webdriver
from log.logging_test import logger

def android_driver():
    desired_caps = {
        "platformName": "Android",
        "platformVersion": "10",
        "deviceName": "PCT_AL10",
        "appPackage": "com.ss.android.article.news",
        "appActivity": ".activity.MainActivity",
        "unicodeKeyboard": True,
        "resetKeyboard": True,
        "noReset": True,
    }
    logger.info("啟動今日頭條APP...")
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
    return driver

def login_opera(driver):
    '''登錄今日頭條操作'''
    logger.info("開始登陸今日頭條APP...")
    try:
        driver.find_element_by_id("com.ss.android.article.news:id/cji").click() # 點擊【我知道了】
        driver.find_element_by_id("android:id/button1").click() # 點擊權(quán)限管理-確定按鈕
        driver.find_element_by_xpath("http://android.widget.TabWidget/android.widget.RelativeLayout[@index=3]").click() # 點擊未登錄
        driver.find_element_by_id("com.ss.android.article.news:id/a10").click() # 未登錄頁點擊登錄按鈕
        driver.find_element_by_id("com.ss.android.article.news:id/bgh").click() # 登錄頁點擊“。。?!?/span>
        driver.find_element_by_xpath("http://android.widget.LinearLayout[@index=4]").click() # 選擇密碼登錄
        driver.find_element_by_id("com.ss.android.article.news:id/bu").send_keys("xxxxxx")   # 輸入賬號
        driver.find_element_by_id("com.ss.android.article.news:id/c5").send_keys("xxxxxx")   # 輸入密碼
        driver.find_element_by_id("com.ss.android.article.news:id/a2o").click() # 點擊登錄
    except Exception as e:
        logger.error("登錄錯誤,原因為:{}".format(e))
    else:
        logger.info("登陸成功...")

driver = android_driver()
login_opera(driver)

運行test.py,結(jié)果如下:

2023-08-09 11:45:05,119 logging_test.py[line:21] INFO 啟動今日頭條APP...
2023-08-09 11:45:11,119 logging_test.py[line:27] INFO 開始登陸今日頭條APP...
2023-08-09 11:45:20,120 logging_test.py[line:41] INFO 登陸成功...

6、思路2——日志格式配置示例

logger.conf文件:

[loggers]   # loggers日志器對象列表,必須包含
keys=root, exampleLogger    # 一定要包含root這個值,當(dāng)使用無參函數(shù)logging.getLogger()時,默認返回root這個logger,其他自定義logger可以通過logging.getLogger("exampleLogger")方式進行調(diào)用

[handlers] # handlers處理器對象列表,必須包含
keys=consoleHandler, fileHandler    # 定義聲明handlers信息

[formatters] # formatters格式對象列表,必須包含
keys=form01,form02

[logger_root] # 對loggers中聲明的logger進行逐個配置,且要一一對應(yīng),在所有的logger中,必須制定lebel和handlers這兩個選項。對于非roothandler,還需要添加一些額外的option,如qualname、propagate等。handlers可以指定多個,中間用逗號隔開,比如handlers=fileHandler,consoleHandler,同時制定使用控制臺和文件輸出日志
level=DEBUG
handlers=consoleHandler, fileHandler

[logger_exampleLogger]  # 配置日志處理器exampleLogger:設(shè)置日志級別、日志輸出指定的處理器配置文件,如consoleHandler,fileHandler
level=DEBUG
handlers=consoleHandler, fileHandler
qualname=exampleLogger  # qualname 表示它在logger層級中的名字,在應(yīng)用代碼中通過這個名字制定所使用的handler
propagate=0 # 可選項,其默認是為1,表示消息將會傳遞給高層次logger的handler

[handler_consoleHandler]    # 日志處理器consoleHandler的配置文件
class=StreamHandler   # 定控制臺輸出。將日志消息發(fā)送到輸出到Stream,如std.out, std.err或任何file-like對象
level=DEBUG   # 日志級別
formatter=form01    # 輸出格式
args=(sys.stdout,)

[handler_fileHandler]   # 日志處理器fileHandler的配置文件
class=FileHandler    # 將日志輸出至磁盤文件
level=DEBUG # 日志級別
formatter=form02    # 輸出格式
args=('./log.txt', 'a', 'UTF-8') # 參數(shù)如未設(shè)置絕對路徑,則默認生成在執(zhí)行文件log.py的工作目錄。指定日志文件的打開模式,默認為’a’

[formatter_form01]  # 格式配置1
format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s

[formatter_form02]  # 格式配置2
format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s

注意:
為了說明配置結(jié)構(gòu),這里的配置文件 logger.conf 里加了中文注釋,實際使用時需要將注釋去掉或改寫成英文注釋,否則會報編碼錯誤。

配置文件中包含三大主要模塊:loggers,handlers,formatters。這三個主要模塊包含的內(nèi)容都是通過keys進行指定,然后通過logger_key、handler_key、formatter_key對里面的key進行具體的設(shè)置。

配置handlers中的handler_consoleHandler的參數(shù):指定日志輸出到控制臺、級別、輸出格式、參數(shù)。

配置handlers中的handler_fileHandlers的參數(shù):指定將日志輸出至磁盤文件、設(shè)置日志級別、輸出格式、參數(shù)等。

配置日志輸出格式formatter_xxx,可配置多個,如:form01,form02。

讀取配置文件,創(chuàng)建日志記錄器logger:
baseLog.py

import logging.config

CON_LOG='./logger.conf' # 配置文件路徑
logging.config.fileConfig(CON_LOG)  # '讀取日志配置文件'
logger = logging.getLogger('exampleLogger') # 創(chuàng)建一個日志器logger

調(diào)用示例

目錄結(jié)構(gòu)如下

史上最細,自動化測試-logging日志采集詳細實戰(zhàn)(二),接口自動化,軟件測試,自動化測試,軟件測試,自動化測試,軟件測試工程師,python自動化測試,接口自動化測試,接口自動化,logging

test.py

from appium import webdriver
from log.baseLog import logger

def android_driver():
    desired_caps = {
        "platformName": "Android",
        "platformVersion": "10",
        "deviceName": "PCT_AL10",
        "appPackage": "com.ss.android.article.news",
        "appActivity": ".activity.MainActivity",
        "unicodeKeyboard": True,
        "resetKeyboard": True,
        "noReset": True,
    }
    logger.info("啟動今日頭條APP...")
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
    return driver

def login_opera(driver):
    '''登錄今日頭條操作'''
    logger.info("開始登陸今日頭條APP...")
    try:
        driver.find_element_by_id("com.ss.android.article.news:id/cji").click() # 點擊【我知道了】
        driver.find_element_by_id("android:id/button1").click() # 點擊權(quán)限管理-確定按鈕
        driver.find_element_by_xpath("http://android.widget.TabWidget/android.widget.RelativeLayout[@index=3]").click() # 點擊未登錄
        driver.find_element_by_id("com.ss.android.article.news:id/a10").click() # 未登錄頁點擊登錄按鈕
        driver.find_element_by_id("com.ss.android.article.news:id/bgh").click() # 登錄頁點擊“。。?!?/span>
        driver.find_element_by_xpath("http://android.widget.LinearLayout[@index=4]").click() # 選擇密碼登錄
        driver.find_element_by_id("com.ss.android.article.news:id/bu").send_keys("xxxxxx")   # 輸入賬號
        driver.find_element_by_id("com.ss.android.article.news:id/c5").send_keys("xxxxxx")   # 輸入密碼
        driver.find_element_by_id("com.ss.android.article.news:id/a2o").click() # 點擊登錄
    except Exception as e:
        logger.error("登錄錯誤,原因為:{}".format(e))
    else:
        logger.info("登陸成功...")

driver = android_driver()
login_opera(driver)

控制臺、log.txt輸出結(jié)果如下:

2023-08-09 11:30:35,119 logging_test.py[line:21] INFO 啟動今日頭條APP...
2023-08-09 11:30:40,119 logging_test.py[line:27] INFO 開始登陸今日頭條APP...
2023-08-09 11:31:12,120 logging_test.py[line:41] INFO 登陸成功...
下面是我整理的2023年最全的軟件測試工程師學(xué)習(xí)知識架構(gòu)體系圖

一、Python編程入門到精通

史上最細,自動化測試-logging日志采集詳細實戰(zhàn)(二),接口自動化,軟件測試,自動化測試,軟件測試,自動化測試,軟件測試工程師,python自動化測試,接口自動化測試,接口自動化,logging

二、接口自動化項目實戰(zhàn)

史上最細,自動化測試-logging日志采集詳細實戰(zhàn)(二),接口自動化,軟件測試,自動化測試,軟件測試,自動化測試,軟件測試工程師,python自動化測試,接口自動化測試,接口自動化,logging

三、Web自動化項目實戰(zhàn)

史上最細,自動化測試-logging日志采集詳細實戰(zhàn)(二),接口自動化,軟件測試,自動化測試,軟件測試,自動化測試,軟件測試工程師,python自動化測試,接口自動化測試,接口自動化,logging

四、App自動化項目實戰(zhàn)

史上最細,自動化測試-logging日志采集詳細實戰(zhàn)(二),接口自動化,軟件測試,自動化測試,軟件測試,自動化測試,軟件測試工程師,python自動化測試,接口自動化測試,接口自動化,logging

五、一線大廠簡歷

史上最細,自動化測試-logging日志采集詳細實戰(zhàn)(二),接口自動化,軟件測試,自動化測試,軟件測試,自動化測試,軟件測試工程師,python自動化測試,接口自動化測試,接口自動化,logging

六、測試開發(fā)DevOps體系

史上最細,自動化測試-logging日志采集詳細實戰(zhàn)(二),接口自動化,軟件測試,自動化測試,軟件測試,自動化測試,軟件測試工程師,python自動化測試,接口自動化測試,接口自動化,logging

七、常用自動化測試工具

史上最細,自動化測試-logging日志采集詳細實戰(zhàn)(二),接口自動化,軟件測試,自動化測試,軟件測試,自動化測試,軟件測試工程師,python自動化測試,接口自動化測試,接口自動化,logging

八、JMeter性能測試

史上最細,自動化測試-logging日志采集詳細實戰(zhàn)(二),接口自動化,軟件測試,自動化測試,軟件測試,自動化測試,軟件測試工程師,python自動化測試,接口自動化測試,接口自動化,logging

九、總結(jié)(尾部小驚喜)

相信自己的力量,勇往直前,不懼困難與挫折。擁抱夢想,放飛心靈,用汗水澆灌希望,用努力鑄就輝煌。每一次奮斗都是一次華麗蛻變,創(chuàng)造屬于自己的人生傳世,閃耀成為永恒之星。

熱情點燃夢想,努力點亮未來,奮斗的征程永不停歇。堅持信念,追求卓越,超越自我創(chuàng)造輝煌。每一次努力都是成長的契機,讓激情與毅力塑造輝煌人生。

奮斗是燃燒未來的火焰,努力是超越平凡的鑰匙。相信自己的力量,追逐夢想的腳步不停歇。奮發(fā)向前,創(chuàng)造輝煌,每一次努力都是青春的宣言,讓無限可能綻放人生的輝煌。文章來源地址http://www.zghlxwxcb.cn/news/detail-635397.html

到了這里,關(guān)于史上最細,自動化測試-logging日志采集詳細實戰(zhàn)(二)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 2023最全最細的Selenium+Pytest自動化測試框架實戰(zhàn)

    2023最全最細的Selenium+Pytest自動化測試框架實戰(zhàn)

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 選前言# ? selenium自動化+ pytest測試框架 本章你需要 一定的python基礎(chǔ)——至少明白類與對象,封裝繼承 一定的selenium基礎(chǔ)——本篇不講selenium,不會的可以自己去看selenium中文翻譯網(wǎng) 測試框架簡介# 測試框架有什么優(yōu)點呢: 代碼復(fù)用率高,

    2024年02月06日
    瀏覽(27)
  • 全網(wǎng)最細,Python接口自動化測試websocket接口實戰(zhàn),即學(xué)即用......

    全網(wǎng)最細,Python接口自動化測試websocket接口實戰(zhàn),即學(xué)即用......

    在python中,發(fā)送http請求,比較有名的是requests這個庫;webservice的接口可以使用suds-py3來請求。那么websocket怎么請求呢? 其實在python中也有很多第三方庫可以用來發(fā)送websocket請求。比如websocket-client, 那么接下來我們先來看看websocket-client這個庫的使用。 Python接口自動化測試:

    2024年02月12日
    瀏覽(50)
  • 2023年全網(wǎng)最全最細最流行的自動化測試工具有哪些?

    2023年全網(wǎng)最全最細最流行的自動化測試工具有哪些?

    隨著測試工程師技能和工資待遇的提升,甚至有一部分的開發(fā)人員開始轉(zhuǎn)入測試崗位,跨入自動化領(lǐng)域的測試攻城獅越來越多。在自動化測試領(lǐng)域,自動化工具肯定占據(jù)了核心的位置。 本文總結(jié)了常用的測試自動化工具和框架,這些工具和框架有助于更好地定位自己,以跟上

    2024年02月08日
    瀏覽(20)
  • Selenium+Pytest自動化測試框架實戰(zhàn),還不會點這里一清二楚,全網(wǎng)最細教程!

    Selenium+Pytest自動化測試框架實戰(zhàn),還不會點這里一清二楚,全網(wǎng)最細教程!

    在華為工作了10年的大佬出的Web自動化測試教程,華為現(xiàn)用技術(shù)教程!_嗶哩嗶哩_bilibili 在華為工作了10年的大佬出的Web自動化測試教程,華為現(xiàn)用技術(shù)教程!共計16條視頻,包括:1. 【web自動化】主流Web自動化測試技術(shù)對比、2. 【web自動化】Selenium自動化測試環(huán)境一鍵搭建、

    2024年02月02日
    瀏覽(27)
  • web UI 自動化測試:Selenium 語法詳解 史上最全

    web UI 自動化測試:Selenium 語法詳解 史上最全

    selenium主要是用來做自動化測試,支持多種瀏覽器,爬蟲中主要用來解決JavaScript渲染問題。模擬瀏覽器進行網(wǎng)頁加載 一、聲明瀏覽器對象 二、訪問頁面并獲取網(wǎng)頁html 三、查找元素 單個元素 常用的查找方法 也可以使用通用的方法 四、元素交互操作-搜索框傳入進行自

    2024年02月21日
    瀏覽(25)
  • MySQL Workbench 操作詳解(史上最細)

    MySQL Workbench 操作詳解(史上最細)

    右鍵新建的數(shù)據(jù)庫BMI,設(shè)置為此次連接的默認數(shù)據(jù)庫,接下來的所有操作都將在這個數(shù)據(jù)庫下進行 將bmi下拉單展開,點擊Table,右鍵創(chuàng)建Table: 給Table命名,添加Column,設(shè)置Column的Datatype,PrimaryKey等屬性。點擊Apply后,Workbench仍會自動生成SQL語句,再次點擊Apply,成功創(chuàng)建新表

    2023年04月08日
    瀏覽(24)
  • 自動化測試中的失敗截圖和存log

    自動化測試中的失敗截圖和存log

    如果我們在執(zhí)行自動化測試的時候,希望能在失敗的時候保存現(xiàn)場,方便事后分析。 對于UI自動化,我們希望截圖在測試報告中。 對于api自動化,我們希望截取出錯的log在測試報告中。 我開始自己蠻干,寫了兩個出錯截圖的方法。 出錯截圖,我寫了一個裝飾器 似乎能達到我

    2024年02月21日
    瀏覽(17)
  • 【史上最細教程】一臺服務(wù)器上搭建2個MySQL實例

    【史上最細教程】一臺服務(wù)器上搭建2個MySQL實例

    服務(wù)器:阿里云CentOS7 MySQL數(shù)據(jù)庫:mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz 這里已為您準備安裝包(gitee): https://gitee.com/song-rice/devops-and-middleware-module-learning/blob/master/mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz 或者去官網(wǎng)下載:http://dev.mysql.com/get/Downloads 1.安裝MySQL 先看看是否已安裝過(自帶

    2024年01月25日
    瀏覽(30)
  • 2023全網(wǎng)最細最全保姆級gitlab+Jenkins+maven自動化部署springboot項目教程

    2023全網(wǎng)最細最全保姆級gitlab+Jenkins+maven自動化部署springboot項目教程

    如果沒有Linux基礎(chǔ)請仔細看好每一個步驟,避免出錯,從0到1帶你搭建自動化部署環(huán)境,包括服務(wù)器安裝,自動化部署所需各類軟件安裝配置,詳細貼出每一步,不斷步驟,讓你一次搭建部署完成,希望這篇文章能給大家?guī)硪欢ǖ膸椭?話不多說開始整 2.0 CentOs安裝 2.0.1 下載VM虛擬機 我直

    2024年02月08日
    瀏覽(62)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包