python自動化測試實戰 —— 單元測試框架

軟件測試專欄

感興趣可看:軟件測試專欄
? ?? ? ? ?? ? ? ?? ? 自動化測試學習部分源碼
python自動化測試相關知識:
? ?? ? 【如何學習Python自動化測試】—— 自動化測試環境搭建
? ?? ? 【如何學習python自動化測試】—— 瀏覽器驅動的安裝 以及 如何更新driver
? ?? ? 【如何學習Python自動化測試】—— 頁面元素定位
? ?? ? 【如何學習Python自動化測試】—— 時間等待
? ?? ? 【如何學習Python自動化測試】—— 瀏覽器操作
? ?? ? 【如何學習Python自動化測試】—— 鼠標鍵盤操作
? ?? ? 【如何學習Python自動化測試】—— 多層窗口定位
? ?? ? 【如何學習Python自動化測試】—— 警告框處理
? ?? ? 【如何學習Python自動化測試】—— Cookie 處理
? ?? ? 【如何學習Python自動化測試】—— expected_conditions
? ?? ? 【如何學習Python自動化測試】—— Python 的 unittest 框架
? ?? ? 【如何學習Python自動化測試】—— HTMLTestRunner 生成測試報告


單元測試框架

  • 軟件測試專欄
  • 實戰相關知識
    • 1.unittest框架
    • 2.Pytest測試框架
  • 實戰內容
    • 1.“百度翻譯”的頁面UI測試
      • (1)利用unittest框架完成
      • (2)利用Pytest框架完成
    • 2.“新浪微博”的兩個頁面UI測試
      • (1)利用unittest框架完成
      • (2)利用Pytest框架完成
  • 操作異常問題與解決方案
  • 總結
  • 附錄

實戰相關知識

1.unittest框架

? ?? ?unittest框架是Python語言內置的單元測試框架,Python編寫的Web UI自動化測試腳本可以借助該框架來組織和執行。

(1)UnitTest組成部分

  • TestFixture(測試固件):測試用例的準備和銷毀。
  • TestCase(測試用例):一個TestCase的實例就是一個測試用例。
  • TestSuite(測試套件):將多個測試用例集合在一起就是一個TestSuite。
  • TestRunner(測試運行器):使用TextTestRunner提供的 run( )方法執行測試用例。

(2)使用UnitTest測試框架注意:

  • 首先需要導入unittest包:import unittest。
  • 導入包的語句和定義測試類中間要隔兩個空行。
  • 新建測試類的名稱,建議每個單詞的首字母大寫,編寫順序建議保持團隊一致。
  • 測試類必須繼承unittest.TestCase
  • 接下來可以編寫setUp,setUp方法不是必須需要的。
  • 接下來可以編寫測試用例,測試用例名稱以”test_”開頭。
    ? ?? ? self.assertXXX是UnitTest提供的斷言方法
  • 用例寫完,就可以編寫tearDown,tearDown也不是必須要有。
    ? ?? ?tearDown寫完后空兩行,就可以使用unittest.main()進行測試了。

(3)用HTMLTestRunner模塊生成可視化測試報告。

2.Pytest測試框架

? ?? ?Pytest測試框架在當今自動化測試中更受歡迎,是一個非常流行且成熟的全功能的Python測試框架,適用于單元測試、UI測試、接口測試。

(1)Pytest規則

  • 文件命名:默認以“test_”開頭或者以”_test”結尾。
  • 測試類(class)命名:默認以“Test”開頭
  • 測試方法(函數)命名:默認以“test_”開頭
  • 斷言:直接使用Python語言的斷言assert

(2)Pytest測試固件

  • 如果測試文件中沒有定義class,而是直接定義的函數,那么使用setup_module、teardown_module 和 setup_function、teardown_function
  • 如果測試文件中定義了class,就使用setup_class、teardown_class 和 setup_method、teardown_method
  • 不管是否定義class,都可以使用setup、teardown來實現在每個方法(或函數)的前后執行。
  • 建議在一個項目中約定好是定義class來組織測試用例,還是直接定義函數來組織用例。

(3)測試用例
? ?? ?Pytest和unittest的框架風格基本一致,但有幾點要注意:

  • 注意函數或方法名以“test_”開頭
  • 直接通過函數定義測試用例的話,def后面的括號中沒有self
  • 通過class中的方法定義測試用例的話,def后面的括號中有self。
  • 斷言用的是Python的斷言方式。

(4)用第三方插件完成測試報告的生成。

實戰內容

1.“百度翻譯”的頁面UI測試

? ?? ?將“百度翻譯”的頁面UI測試(至少包含翻譯功能這個測試用例)的自動化測試線性腳本,分別用unittest和Pytest框架完成,并生成測試報告。

(1)利用unittest框架完成

首先需要導入包
在這里插入圖片描述

新建測試類的名稱,測試類必須繼承unittest.TestCase
在這里插入圖片描述

編寫setUp
在這里插入圖片描述

編寫測試用例,測試用例名稱以”test_”開頭。

  • 用例1:輸入的文字與語言不一致
    在這里插入圖片描述
    使用assertTRUE斷言方法,斷言網頁會輸出與輸入文字匹配的語言,如下圖
    在這里插入圖片描述

  • 用例2:輸入的文字與語言一致
    在這里插入圖片描述
    使用assertEqual斷言方法,斷言輸出文本框結果與預期結果一致,如下圖
    在這里插入圖片描述
    用例寫完,編寫tearDown
    在這里插入圖片描述
    tearDown寫完后空兩行,使用unittest.main()進行測試
    在這里插入圖片描述
    用第三方插件完成測試報告的生成
    將HTMLTestRunner.py和run.py以及__init__.py文件放置與腳本文件同級目錄下,如下圖:
    在這里插入圖片描述
    編寫run.py文件
    在這里插入圖片描述
    運行run.py文件
    運行結果如下
    在這里插入圖片描述
    出現如上結果,說明兩個測試用例通過
    測試報告如下
    在這里插入圖片描述

(2)利用Pytest框架完成

首先需要導入包
在這里插入圖片描述
新建測試類的名稱,默認以“Test”開頭
在這里插入圖片描述

編寫setUp
在這里插入圖片描述
編寫測試用例,測試用例名稱以”test_”開頭。

  • 用例1:輸入的文字與語言不一致
    在這里插入圖片描述
    使用Python語言的斷言assert,斷言網頁會輸出與輸入文字匹配的語言

  • 用例2:輸入的文字與語言一致
    在這里插入圖片描述
    使用Python語言的斷言assert,斷言輸出文本框結果與預期結果一致

  • 用例寫完,編寫teardown
    在這里插入圖片描述
    全局設置
    創建一個配置文件:pytest.ini
    該文件要和需要執行的測試文件所在的目錄文件在同一級
    如下圖所示:
    在這里插入圖片描述
    pytest.ini內容如下:
    在這里插入圖片描述
    通過addopts來設置命令行參數;-v 監控、失敗重試的次數、重試的時間間隔、按標簽來執行、生成測試報告,多個參數之間用空格分隔

  • 接著在py文件teardown后兩行,使用pytest.main()進行測試
    在這里插入圖片描述
    運行結果如下
    在這里插入圖片描述
    出現passed說明兩個測試用例通過
    測試報告如下
    在這里插入圖片描述

2.“新浪微博”的兩個頁面UI測試

? ?? ?將“新浪微博”的兩個頁面UI測試(至少包含登錄賬號、發文字微博兩個測試用例)的自動化測試線性腳本,分別用unittest和Pytest框架完成,并生成測試報告。

(1)利用unittest框架完成

首先需要導入包
在這里插入圖片描述

新建測試類的名稱,測試類必須繼承unittest.TestCase
在這里插入圖片描述

編寫setUp,因為用例二需要登錄才能進行測試,所以登錄需要寫進setUp
在這里插入圖片描述

編寫測試用例,測試用例名稱以”test_”開頭。

  • 用例1:登錄賬號,這里僅測試是否通過
    在這里插入圖片描述
    使用assertIn斷言方法,斷言用戶名‘111Nuyoah111’會出現在網頁中
    在這里插入圖片描述

  • 用例2:發布微博文字
    使用assertIn斷言方法,斷言發布內容成功,如下圖
    在這里插入圖片描述

  • 用例寫完,編寫tearDown
    在這里插入圖片描述

  • tearDown寫完后空兩行,使用unittest.main()進行測試
    在這里插入圖片描述
    用第三方插件完成測試報告的生成
    將HTMLTestRunner.py和run.py以及__init__.py文件放置與腳本文件同級目錄下,如下圖:
    在這里插入圖片描述

  • 編寫run.py文件
    在這里插入圖片描述
    運行run.py文件
    運行結果如下
    在這里插入圖片描述
    出現如上結果,說明兩個測試用例通過
    測試報告如下
    在這里插入圖片描述

(2)利用Pytest框架完成

首先需要導入包
在這里插入圖片描述

新建測試類的名稱,默認以“Test”開頭
在這里插入圖片描述

編寫setUp
在這里插入圖片描述

編寫測試用例,測試用例名稱以”test_”開頭。

  • 用例1:登錄賬號,這里僅測試是否通過
    在這里插入圖片描述

使用assertIn斷言方法,斷言用戶名‘xxx’會出現在網頁中

  • 用例2:發布微博文字
    在這里插入圖片描述
    使用assertIn斷言方法,斷言發布內容成功

  • 用例寫完,編寫teardown
    在這里插入圖片描述
    全局設置
    創建一個配置文件:pytest.ini
    該文件要和需要執行的測試文件所在的目錄文件在同一級
    如下圖所示:
    在這里插入圖片描述
    pytest.ini內容如下:
    在這里插入圖片描述
    通過addopts來設置命令行參數;-v 監控、失敗重試的次數、重試的時間間隔、按標簽來執行,多個參數之間用空格分隔
    運行生成測試報告,在py文件teardown后兩行,使用pytest.main()進行測試
    在這里插入圖片描述

  • 運行結果如下
    在這里插入圖片描述
    出現passed說明兩個測試用例通過
    測試報告如下
    在這里插入圖片描述

操作異常問題與解決方案

  • 問題1:pytest框架腳本運行失敗
  • 解決方法:通過查詢,發現是pytest環境問題,所以將pytest及相關插件卸載后在全局目錄下重新下載

  • 問題2:allure在成功使用后,再次使用會自動跳過測試用例
    在這里插入圖片描述

  • 解決方法:allure環境不穩定,更換測試報告方法,使用pytest-html完成測試報告


  • 問題3:微博無法使用賬號密碼登錄,測試用例無法完成登錄的試錯
  • 解決方法:修改代碼,直接在setup固件進行手動登錄,最后加入一個登錄的測試用例進行斷言

總結

? ?? ?Unittest和Pytest是Python中常用的兩個測試框架,用于編寫和執行單元測試。

? ?? ?Unittest是Python的內置測試框架之一,可以通過導入unittest模塊來使用。Unittest提供了一組用于編寫測試用例的類和方法,測試用例是通過繼承unittest.TestCase類來創建的。測試方法以test_開頭,并且可以使用斷言方法(如assertEqual()、assertTrue()等)來驗證預期行為。Unittest提供了豐富的功能和工具,如測試套件、測試裝置(setUp()和tearDown()方法)、測試發現等。可以使用命令行工具或集成開發環境(IDE)來運行Unittest測試。

? ?? ?Pytest是一個第三方的Python測試框架,可以通過安裝pytest庫來使用。Pytest提供了更簡潔、靈活和可擴展的方式來編寫測試用例。不需要繼承特定的基類,可以使用普通的函數定義測試用例,用assert語句來斷言結果。Pytest具有豐富的插件生態系統和許多附加功能,例如自動發現測試文件、參數化測試、夾具(fixtures)等。Pytest支持使用命令行工具來運行測試,并提供了豐富的輸出和報告選項。

? ?? ?unitest和pytest的區別是:語法風格:Unittest使用類和方法的方式來組織測試用例,而Pytest使用函數定義測試用例。靈活性:Pytest提供了更靈活和簡潔的語法,沒有像Unittest那樣的約束。Pytest的編寫方式更為簡單,減少了樣板代碼的編寫。插件生態系統:Pytest具有豐富的插件生態系統,提供了許多附加功能和擴展選項,而Unittest相對較少。自動發現測試:Pytest具有自動發現測試文件和用例的功能,而Unittest需要手動設置測試套件和加載用例。夾具支持:Pytest提供了強大的夾具(fixtures)機制,用于管理測試數據和環境設置。Unittest也支持夾具,但Pytest的夾具功能更為靈活和強大。

? ?? ?總體而言,Pytest相對于Unittest提供了更簡潔、靈活且功能更豐富的測試框架,能夠簡化測試代碼的編寫和維護,并提供更好的測試發現和報告功能。當然,選擇使用哪個框架取決于個人偏好和項目需求。

附錄

部分源碼(與上面截圖有所不同,僅供參考)

Baidu unittest

from selenium import webdriver
import unittest
from time import sleep
from selenium.webdriver.common.by import Byclass TestBaidu(unittest.TestCase):def setUp(self):self.driver = webdriver.Chrome()self.driver.maximize_window()self.driver.implicitly_wait(20)# 訪問登錄頁self.driver.get('https://fanyi.baidu.com/')# 移除廣告彈窗self.driver.find_element(By.CLASS_NAME,'app-guide-close').click()def test_001(self):# 用例一:輸入的文字與選擇的語言不一致# 選擇語言阿拉伯語language = self.driver.find_element(By.CLASS_NAME,'select-from-language')language.click()language_text=self.driver.find_element(By.XPATH,'//*[@id="lang-panel-container"]''/div/div[5]/div[1]/div[1]/div/span[1]')language_text.click()#輸入翻譯文本英語intext =self.driver.find_element(By.CLASS_NAME,'textarea')intext.send_keys('love')sleep(2)# 輸入不匹配文字后的提示信息self.assertTrue(self.driver.find_element(By.LINK_TEXT,'英語'))def test_002(self):# # 用例二:輸入的文字與選擇的語言一致# 選擇語言英語language = self.driver.find_element(By.CLASS_NAME, 'select-from-language')language.click()language_text = self.driver.find_element(By.XPATH,'//*[@id="lang-panel-container"]''/div/div[5]/div[1]/div[21]/div/span[1]')language_text.click()# 輸入翻譯文本英語intext = self.driver.find_element(By.CLASS_NAME, 'textarea')intext.send_keys('love')sleep(2)# 輸入不匹配文字后的提示信息outtext = self.driver.find_element(By.CLASS_NAME, 'output-bd').textself.assertEqual(outtext,'愛')def tearDown(self):self.driver.quit()if __name__ == '__main__':unittest.main()

Baidu pytest

from time import sleepimport pytest
from selenium import webdriver
from selenium.webdriver.common.by import Byclass TestBaidu():def setup(self):self.driver = webdriver.Chrome()self.driver.maximize_window()self.driver.implicitly_wait(20)# 訪問登錄頁self.driver.get('https://fanyi.baidu.com/')# 移除廣告彈窗self.driver.find_element(By.CLASS_NAME,'app-guide-close').click()@pytest.mark.L1def test_001(self):# 用例一:輸入的文字與選擇的語言不一致# 選擇語言阿拉伯語language = self.driver.find_element(By.CLASS_NAME,'select-from-language')language.click()language_text=self.driver.find_element(By.XPATH,'//*[@id="lang-panel-container"]''/div/div[5]/div[1]/div[1]/div/span[1]')language_text.click()#輸入翻譯文本英語intext =self.driver.find_element(By.CLASS_NAME,'textarea')intext.send_keys('love')sleep(2)# 輸入不匹配文字后的提示信息assert '英語' == self.driver.find_element(By.LINK_TEXT,'英語').text@pytest.mark.L2def test_002(self):# # 用例二:輸入的文字與選擇的語言一致# 選擇語言英語language = self.driver.find_element(By.CLASS_NAME, 'select-from-language')language.click()language_text = self.driver.find_element(By.XPATH,'//*[@id="lang-panel-container"]''/div/div[5]/div[1]/div[21]/div/span[1]')language_text.click()# 輸入翻譯文本英語intext = self.driver.find_element(By.CLASS_NAME, 'textarea')intext.send_keys('love')sleep(2)# 輸入不匹配文字后的提示信息outtext = self.driver.find_element(By.CLASS_NAME, 'output-bd').textassert outtext=='愛'def teardown(self):self.driver.quit()if __name__ == '__main__':pytest.main(["-s", "./test_baidu.py"])

Weibo unittest

from selenium import webdriver
import time,unittest
# 通過時間戳,構造唯一project name
from selenium.webdriver.common.by import Byproject_name = 'project_{}'.format(time.time())class TestNewProject(unittest.TestCase):def setUp(self):self.driver = webdriver.Chrome()self.driver.maximize_window()self.driver.implicitly_wait(20)# 登錄self.driver.get('https://weibo.com')self.driver.find_element(By.CLASS_NAME, 'LoginCard_btn_Jp_u1').click()time.sleep(8)  # 手動掃碼登錄def test_new_project(self):# 測試搜索框輸入框self.driver.find_element(By.CLASS_NAME,'Form_input_2gtXx').send_keys('123')time.sleep(1)self.driver.find_element(By.CLASS_NAME,'Visible_angle_MP2Km').click()time.sleep(1)self.driver.find_element(By.XPATH,'//*[@id="homeWrap"]/div[1]/div/div[4]/div/div[3]/div/div/div[4]').click()# 測試發布self.driver.find_element(By.CLASS_NAME,'Tool_btn_2Eane').click()time.sleep(1)self.assertIn('123', self.driver.page_source)def tearDown(self):self.driver.quit()if __name__ == '__main__':unittest.main()

Weibo pytest

import time
import pytest
from selenium import webdriver
from selenium.webdriver.common.by import Byclass TestWeibo  ():def setup(self):self.driver = webdriver.Chrome()self.driver.maximize_window()self.driver.implicitly_wait(20)# 登錄self.driver.get('https://weibo.com')self.driver.find_element(By.CLASS_NAME, 'LoginCard_btn_Jp_u1').click()time.sleep(8)  # 手動掃碼登錄@pytest.mark.L1def test_new_project(self):assert 'xxx' in self.driver.page_source#此處自行修改“xxx”# 測試搜索框輸入框self.driver.find_element(By.CLASS_NAME,'Form_input_2gtXx').send_keys('123')time.sleep(1)self.driver.find_element(By.CLASS_NAME,'Visible_angle_MP2Km').click()time.sleep(1)self.driver.find_element(By.XPATH,'//*[@id="homeWrap"]/div[1]/div/div[4]/div/div[3]/div/div/div[4]').click()# 測試發布self.driver.find_element(By.CLASS_NAME,'Tool_btn_2Eane').click()time.sleep(1)assert '123' in self.driver.page_sourcedef teardown(self):self.driver.quit()if __name__ == '__main__':pytest.main(["-s", "test_weibo.py", "--html=./report.html"])

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215352.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215352.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215352.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

swing快速入門(五)

注釋很詳細,直接上代碼 上一篇 本篇新增內容: 1.布局管理器BorderLayout 2.自適應尺寸方法pack() import java.awt.*; public class swing_test_3 {public static void main(String[] args) {Frame framenew Frame("演示BorderLayout");//…

第十六屆山東省職業院校技能大賽高職組“應用軟件系統開發”賽項樣題

第十六屆山東省職業院校技能大賽 高職組“應用軟件系統開發”賽項樣題 目錄 一.競賽須知 二.競賽任務標題二 模塊一:系統需求分析(25分) 模塊二:軟件系統開發(55分) 模塊三&am…

【APP安卓測試工具】adb(Android Debug Bridge)

1.常見的命令 列出已連接的設備 adb device安裝 adb install <APK文件路徑>卸載 adb uninstall <APK文件路徑>啟動和停止 adb shell am start -n <包名>[/<Activity>]adb shell am force -stop <包名>截屏和錄屏 adb shell screencap <文件路…

cordic 算法學習記錄

參考&#xff1a;b站教學視頻FPGA&#xff1a;Cordic算法介紹與實現_嗶哩嗶哩_bilibili FPGA硬件實現加減法、移位等操作比較簡單&#xff0c;但是實現乘除以及函數計算復雜度高且占用資源多&#xff0c;常見的計算三角函數/平方根的求解方式有①查找表&#xff1a;先把函數對應…

JVM面試連環炮:你準備好迎接挑戰了嗎?

在Java開發領域&#xff0c;JVM面試一直是一個熱門話題。作為一名優秀的開發者&#xff0c;你是否已經準備好迎接這場挑戰了呢&#xff1f;今天&#xff0c;我們就來深度解析一下JVM面試的熱點問題&#xff0c;幫助你更好地應對面試&#xff0c;一舉拿下offer&#xff01; 1、…

Python 使用sphinx生成API文檔

目錄 前言: 項目層級 Python項目docstring規范 Example Google Style Python Docstrings Example NumPy Style Python Docstrings reStructuredText Style 設置代碼docstrings風格(pycharm) 安裝sphinx 創建sphinx文檔項目 配置conf.py文件 編譯代碼為api文檔 編譯…

vim + ctags 跳轉, 查看函數定義

yum install ctags Package ctags-5.8-13.el7.x86_64 already installed and latest version 創建 /home/mzh/pptp-master/tags.sh #!/usr/bin/shWORKDIR/home/mzh/pptp-masterfind ${WORKDIR} -name "*.[c|h]" | xargs ctags -f ${WORKDIR}/tags find /usr/inclu…

final的安全發布

final的安全發布 兩個關鍵字“發布”“安全” 所謂發布通俗一點的理解就是創建一個對象&#xff0c;使這個對象能被當前范圍之外的代碼所使用 比如Object o new Object(); 然后接下來使用對象o 但是對于普通變量的創建&#xff0c;之前分析過&#xff0c;大致分為三個步驟&am…

k8s之身份認證與權限

Kubernetes 中提供了良好的多租戶認證管理機制&#xff0c;如 RBAC、ServiceAccount 還有各種策略等。 通過該文件可以看到已經配置了 RBAC 訪問控制 /usr/lib/systemd/system/kube-apiserver.service 1.1 認證 所有 Kubernetes 集群有兩類用戶&#xff1a;由 Kubernetes 管理的…

mysql數據庫學習筆記(1)

今天開始學mysql數據庫&#xff0c;為什么要學這個呢&#xff0c;因為數據庫可結構化存儲大量的數據信息&#xff0c;方便用戶進行有效的檢索和訪問。數據庫可有效地保持數據信息的一致性、完整性、降低數據冗余。數據庫可滿足應用的共享和安全方面的要求&#xff0c;把數據放在…

java--認識異常、自定義異常

1.異常體系 Error&#xff1a;代表的系統級別錯誤(屬于嚴重問題)&#xff0c;也就是說系統一旦出現問題&#xff0c;sun公司會把這些問題封裝成Error對象給出來&#xff0c;說白了&#xff0c;Error是給sun公司自己用的&#xff0c;不是給我們程序員用的&#xff0c;因此我們開…

MacOS下homebrew的安裝與使用

安裝Homebrew //刪除原來的文件&#xff0c;可以在刪除前查看下Cellar文件夾下已安裝的包,homebrew將工具安裝在這個文件夾下&#xff0c;并在/usr/local/bin下建立連接 sudo -irm -rf /usr/local/Cellar /usr/local/.gi sudo chown -R liudong /usr/local //更新文件屬主為liu…

114. 二叉樹展開為鏈表 --力扣 --JAVA

題目 給你二叉樹的根結點 root &#xff0c;請你將它展開為一個單鏈表&#xff1a; 展開后的單鏈表應該同樣使用 TreeNode &#xff0c;其中 right 子指針指向鏈表中下一個結點&#xff0c;而左子指針始終為 null 。展開后的單鏈表應該與二叉樹 先序遍歷 順序相同。 解題思路 …

通過Ai幫我們寫前端界面設計

現在我要寫一個前端界面&#xff0c;from表單&#xff0c;讓用戶登錄使用的&#xff0c;提交表單之前先分析用戶名和密碼是否填的完成&#xff0c;并且檢查密碼必須滿足 包含大小寫&#xff0c;數字&#xff0c;密碼長度必須在8到20之間&#xff0c;不滿足不可以提交。用戶名必…

ethtool

ethtool ethtool是一個常用的命令行工具&#xff0c;用于配置和查詢以太網接口的驅動程序和硬件參數。它提供了一種簡單的方式來檢查和修改網絡接口的設置&#xff0c;以及獲取與以太網接口相關的統計數據和狀態信息。 ethtool可以執行以下常見的操作&#xff1a; 查詢接口信息…

【Hadoop】修改YARN配置文件

本節需要修改的 YARN 配置文件保存在$HADOOP_HOME/etc/haoop 目錄下&#xff0c;需要修改的文件共有 7 個&#xff0c;分別是&#xff1a;core-site.xml, hadoop-env.sh, hdfs-site.xml, yarn-site.xml, yarn-env.sh, mapred-site.xml, slave. 這些文件的用途&#xff1a; core…

Mysql:慢cpu過高慢sql查詢方法

通過 processlist查詢較為便捷&#xff0c;只是結果的info中只會顯示sql的前100個字符。 show processlist 通過下面語句查詢可顯示當前正在執行的完整sql。 SELECT * FROM information_schema.processlist WHERE COMMAND ‘Query’; 借助navicate數據庫工具的監控功能查詢庫的…

大數據技術2:大數據處理流程

前言&#xff1a;下圖是一個簡化的大數據處理流程圖&#xff0c;大數據處理的主要流程包括數據收集、數據存儲、數據處理、數據應用等主要環節。 1.1 數據收集 大數據處理的第一步是數據的收集。現在的中大型項目通常采用微服務架構進行分布式部署&#xff0c;所以數據的采集需…

【常用字符大全】含emoji表情

常用符號大全 ?????????????▲???↑↓◆◇⊙■□△▽─│??♂♀?????????▼???≈←→?◎☉★☆⊿※¡━┃??ツ?????©?Σ????卐√↖↗●?Θ◤◥︻〖〗┄┆℃℉?????¢€£∞?★?↙↘○?⊕◣◢︼【】┅┇…

Java 中適合使用隊列(Queue)的場景

在 Java 中&#xff0c;隊列&#xff08;Queue&#xff09;適合用于以下場景&#xff1a; 先進先出&#xff08;FIFO&#xff09;數據處理&#xff1a;當需要按照數據的添加順序進行處理時&#xff0c;可以使用隊列。例如&#xff0c;處理任務隊列、消息隊列等。 示例&#xff…