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

Python Selenium搭建UI自動化測試框架

這篇具有很好參考價值的文章主要介紹了Python Selenium搭建UI自動化測試框架。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

自動化測試是軟件測試中非常重要的一部分,可以提高測試效率和測試覆蓋率。在UI自動化測試中,Selenium是非常流行的工具。本文將介紹如何使用Python和Selenium搭建UI自動化測試框架。

一、環(huán)境準備

在開始搭建UI自動化測試框架之前,需要先安裝Python和Selenium??梢詮腜ython官網(wǎng)下載Python安裝包,并使用pip命令安裝Selenium。

二、框架目錄結構

在搭建UI自動化測試框架之前,需要先規(guī)劃好框架的目錄結構。以下是一個比較完整的目錄結構:

├──?config
│???├──?__init__.py
│???├──?config.ini
│???└──?logger.ini
├──?data
│???├──?__init__.py
│???├──?test_data.xlsx
│???└──?test_data.json
├──?logs
│???├──?__init__.py
│???└──?test.log
├──?page
│???├──?__init__.py
│???└──?login_page.py
├──?report
│???├──?__init__.py
│???└──?test_report.html
│???└──?screenshots
│???????├──?test_login_failure_2022-05-01_08-30-00.png
│???????└──?test_login_success_2022-05-01_08-30-00.png
├──?testcase
│???├──?__init__.py
│???└──?test_login.py
├──?utils
│???├──?__init__.py
│???├──?driver.py
│???├──?logger.py
│???└──?read_config.py
│???└──?take_screenshot.py
├──?.gitignore
├──?README.md
├──?requirements.txt
└──?run.py

config:存放配置文件,包括config.ini和logger.ini。

data:存放測試數(shù)據(jù),包括Excel和JSON格式的數(shù)據(jù)。

logs:存放日志文件,包括test.log。

page:存放頁面對象,每個頁面對應一個.py文件。

report:存放測試報告,包括test_report.html。

screenshots:用于存放測試過程中的截圖。

testcase:存放測試用例,每個用例對應一個.py文件。

utils:存放工具類,包括driver.py、logger.py和read_config.py。

.gitignore:Git忽略文件列表。

README.md:項目說明文件。

requirements.txt:Python依賴包列表。

run.py:測試執(zhí)行入口。

三、框架搭建

1.創(chuàng)建項目目錄

在本地創(chuàng)建一個項目目錄,進入該目錄,執(zhí)行以下命令:

mkdir?config?data?logs?page?report?report/screenshots?testcase?utils
touch?.gitignore?README.md?requirements.txt?run.py
cd?config?&&?touch?__init__.py?config.ini?logger.ini?&&?cd?..
cd?data?&&?touch?__init__.py?test_data.xlsx?test_data.json?&&?cd?..
cd?logs?&&?touch?__init__.py?test.log?&&?cd?..
cd?page?&&?touch?__init__.py?login_page.py?&&?cd?..
cd?report?&&?touch?__init__.py?test_report.html?&&?cd??..
cd?testcase?&&?touch?__init__.py?test_login.py?&&?cd?..
cd?utils?&&?touch?__init__.py?driver.py?logger.py?read_config.py?&&?cd?..

2.安裝依賴包

在項目目錄下執(zhí)行以下命令,安裝依賴包:

pip?install?selenium?openpyxl?configparser?loguru

3.編寫配置文件

在config目錄下的config.ini文件中,配置瀏覽器類型和網(wǎng)站地址:

[Browser]
browser_name?=?chrome

[URL]
base_url?=?https://www.example.com

在config目錄下的logger.ini文件中,配置日志文件路徑和日志級別:

[loggers]
keys=root

[handlers]
keys=consoleHandler,fileHandler

[formatters]
keys=formatter

[logger_root]
level=DEBUG
handlers=consoleHandler,fileHandler

[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=formatter
args=(sys.stdout,)

[handler_fileHandler]
class=handlers.TimedRotatingFileHandler
level=DEBUG
formatter=formatter
args=('logs/test.log',?'D',?1,?30)

[formatter_formatter]
format=%(asctime)s?-?%(name)s?-?%(levelname)s?-?%(message)s
datefmt=%Y-%m-%d?%H:%M:%S

4.編寫工具類

在utils目錄下的driver.py文件中,封裝獲取瀏覽器驅動的方法:

import?os
from?selenium?import?webdriver
from?configparser?import?ConfigParser

def?get_driver():
????config?=?ConfigParser()
????config.read(os.path.join(os.path.dirname(__file__),?'../config/config.ini'))

????browser_name?=?config.get('Browser',?'browser_name')
????if?browser_name.lower()?==?'chrome':
????????return?webdriver.Chrome()
????elif?browser_name.lower()?==?'firefox':
????????return?webdriver.Firefox()
????elif?browser_name.lower()?==?'edge':
????????return?webdriver.Edge()
????else:
????????raise?ValueError('Unsupported?browser:?{}'.format(browser_name))

在utils目錄下的logger.py文件中,封裝日志記錄的方法:

import?os
from?loguru?import?logger
from?configparser?import?ConfigParser

config?=?ConfigParser()
config.read(os.path.join(os.path.dirname(__file__),?'../config/logger.ini'))

logger.add(config.get('handler_fileHandler',?'class'),?level=config.get('logger_root',?'level'),?rotation=config.getint('handler_fileHandler',?'args')[2],?retention=config.getint('handler_fileHandler',?'args')[3])

def?get_logger(name):
????return?logger.bind(name=name)

在utils目錄下的read_config.py文件中,封裝讀取配置文件的方法:

import?os
from?configparser?import?ConfigParser

config?=?ConfigParser()
config.read(os.path.join(os.path.dirname(__file__),?'../config/config.ini'))

def?get_base_url():
????return?config.get('URL',?'base_url')

在utils目錄下新增了一個take_screenshot.py文件,用于封裝截圖的方法:

import?os
from?datetime?import?datetime
from?utils.driver?import?get_driver

def?take_screenshot(name):
????driver?=?get_driver()
????screenshot_dir?=?os.path.join(os.path.dirname(__file__),?'../report/screenshots')
????os.makedirs(screenshot_dir,?exist_ok=True)
????screenshot_file?=?os.path.join(screenshot_dir,?'{}_{}.png'.format(name,?datetime.now().strftime('%Y-%m-%d_%H-%M-%S')))
????driver.save_screenshot(screenshot_file)

5.編寫頁面對象

在page目錄下的login_page.py文件中,封裝登錄頁面的元素定位和操作方法:

from?selenium.webdriver.common.by?import?By
from?utils.driver?import?get_driver

class?LoginPage:
????url?=?'/login.html'
????username_input?=?(By.ID,?'username')
????password_input?=?(By.ID,?'password')
????login_button?=?(By.ID,?'login-button')

????def?__init__(self):
????????self.driver?=?get_driver()

????def?open(self):
????????self.driver.get(get_base_url()?+?self.url)

????def?close(self):
????????self.driver.quit()

????def?login(self,?username,?password):
????????self.driver.find_element(*self.username_input).send_keys(username)
????????self.driver.find_element(*self.password_input).send_keys(password)
????????self.driver.find_element(*self.login_button).click()

6.編寫測試用例

在testcase目錄下的test_login.py文件中,編寫登錄測試用例:

import?unittest
from?page.login_page?import?LoginPage
from?utils.take_screenshot?import?take_screenshot

class?TestLogin(unittest.TestCase):
????def?setUp(self):
????????self.page?=?LoginPage()

????def?tearDown(self):
????????self.page.close()

????def?test_login_success(self):
????????self.page.open()
????????self.page.login('admin',?'admin123')
????????self.assertIn('Welcome',?self.page.driver.title)

????def?test_login_failure(self):
????????self.page.open()
????????self.page.login('admin',?'wrong_password')
????????self.assertIn('Login?failed',?self.page.driver.page_source)
????????take_screenshot('test_login_failure')

7.編寫測試執(zhí)行入口

在run.py文件中,編寫測試執(zhí)行入口:

import?unittest
from?datetime?import?datetime
from?utils.logger?import?get_logger
from?report?import?HTMLTestRunner

logger?=?get_logger(__name__)

if?__name__?==?'__main__':
????logger.info('Start?testing...')
????suite?=?unittest.defaultTestLoader.discover('testcase')
????report_file?=?'report/test_report_{}.html'.format(datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))
????with?open(report_file,?'wb')?as?f:
????????runner?=?HTMLTestRunner.HTMLTestRunner(stream=f,?title='Test?Report',?description='Test?Result')
????????runner.run(suite)
????logger.info('Testing?finished.?Report?file:?{}'.format(report_file))
????
????#?將截圖嵌入測試報告
????with?open(report_file,?'r+',?encoding='utf-8')?as?f:
????????content?=?f.read()
????????for?root,?dirs,?files?in?os.walk('report/screenshots'):
????????????for?file?in?files:
????????????????screenshot_file?=?os.path.join(root,?file)
????????????????if?'test_report'?not?in?screenshot_file:
????????????????????screenshot_name?=?os.path.splitext(os.path.basename(screenshot_file))[0]
????????????????????screenshot_time?=?datetime.strptime(screenshot_name.split('_')[-2],?'%Y-%m-%d')
????????????????????screenshot_url?=?os.path.join(get_base_url(),?screenshot_file)
????????????????????content?=?content.replace('{}"'.format(screenshot_name),?'{}"?width="50%"'.format(screenshot_url))
????????f.seek(0)
????????f.write(content)

四、測試執(zhí)行

在項目目錄下執(zhí)行以下命令,執(zhí)行測試:

python?run.py

測試完成后,測試報告將保存在report目錄下的test_report.html文件中。

五、Jenkins持續(xù)集成

持續(xù)集成是軟件開發(fā)過程中非常重要的一環(huán),可以幫助開發(fā)團隊實現(xiàn)快速迭代和快速交付。Jenkins是一個開源的持續(xù)集成工具,可以幫助團隊實現(xiàn)自動化構建、自動化測試和自動化部署。本文將介紹如何使用Jenkins進行UI自動化測試的持續(xù)集成。

1.Jenkins安裝和配置

安裝Jenkins

Jenkins可以從官網(wǎng)下載安裝包,根據(jù)操作系統(tǒng)選擇相應的安裝包進行安裝。安裝完成后,啟動Jenkins服務。

安裝插件

Jenkins需要安裝一些插件來支持UI自動化測試,包括:

Selenium Plugin:用于集成Selenium和Jenkins。

HTML Publisher Plugin:用于生成測試報告。

在Jenkins的插件管理頁面中,搜索并安裝這兩個插件。

配置Jenkins

在Jenkins的系統(tǒng)管理頁面中,配置全局環(huán)境變量和全局工具配置。

配置全局環(huán)境變量:設置PYTHONPATH變量,指向Python的安裝目錄。

配置全局工具:添加Python和瀏覽器驅動的安裝路徑。

2.Jenkins配置UI自動化測試任務

創(chuàng)建Jenkins任務

在Jenkins的首頁中,點擊“新建任務”,選擇“自由風格軟件項目”,輸入任務名稱,點擊“確定”。

配置源碼管理

在任務配置頁面中,選擇“Git”作為源碼管理方式,填寫代碼倉庫地址和分支信息。

配置構建觸發(fā)器

在任務配置頁面中,選擇“構建觸發(fā)器”,配置定時構建或者代碼提交構建。

配置構建環(huán)境

在任務配置頁面中,選擇“構建環(huán)境”,配置Python環(huán)境和瀏覽器驅動。

配置構建步驟

在任務配置頁面中,選擇“構建步驟”,配置構建腳本。

構建腳本如下:

#!/bin/bash

#?安裝依賴包
pip?install?-r?requirements.txt

#?執(zhí)行測試
python?run.py

#?生成測試報告
cp?report/test_report.html?$WORKSPACE

#?發(fā)布測試報告
echo?'<h2>UI自動化測試報告</h2>'?>?report.html
echo?'<iframe?src="test_report.html"?width="100%"?height="600"></iframe>'?>>?report.html
cp?report.html?$WORKSPACE

配置構建后操作

在任務配置頁面中,選擇“構建后操作”,配置測試報告的發(fā)布方式。

發(fā)布方式如下:

發(fā)布HTML測試報告:選擇“HTML Publisher Plugin”,設置測試報告路徑為$WORKSPACE/report.html。

3.Jenkins測試執(zhí)行

在Jenkins的任務頁面中,點擊“立即構建”,Jenkins將自動拉取代碼,執(zhí)行測試,并生成測試報告。測試報告將發(fā)布到Jenkins的測試報告頁面中。

本文主要介紹了如何使用Python Selenium框架搭建UI自動化測試框架,并給出了一個完整的目錄結構示例進行參考。通過UI自動化測試框架,可以幫助團隊快速構建自動化測試框架,提高測試效率和測試質(zhì)量。希望本文能對你有所幫助。文章來源地址http://www.zghlxwxcb.cn/news/detail-426660.html

到了這里,關于Python Selenium搭建UI自動化測試框架的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • Selenium+python怎么搭建自動化測試框架、執(zhí)行自動化測試用例、生成自動化測試報告、發(fā)送測試報告郵件

    Selenium+python怎么搭建自動化測試框架、執(zhí)行自動化測試用例、生成自動化測試報告、發(fā)送測試報告郵件

    本人在網(wǎng)上查找了很多做自動化的教程和實例,偶然的一個機會接觸到了selenium,覺得非常好用。后來就在網(wǎng)上查閱各種selenium的教程,但是網(wǎng)上的東西真的是太多了,以至于很多東西參考完后無法系統(tǒng)的學習和應用。 以下整理的只是書中自動化項目的知識內(nèi)容,介紹怎么搭

    2024年02月05日
    瀏覽(30)
  • 從零搭建完整python自動化測試框架(UI自動化和接口自動化

    從零搭建完整python自動化測試框架(UI自動化和接口自動化

    總體框架 PO模式、DDT數(shù)據(jù)驅動、驅動 框架技術選擇 框架運行結果 各用例對應的定義方式(PO/DDT) 測試執(zhí)行結果 從零開始搭建項目 一、開發(fā)環(huán)境搭建 二、新建項目 三、基礎功能實現(xiàn) 1. 配置功能實現(xiàn)(Conf) 2. 日志功能實現(xiàn)(Log) 3. 讀取EXCEL實現(xiàn)(data) 4. 郵件發(fā)送實

    2024年02月07日
    瀏覽(30)
  • 從零搭建完整python自動化測試框架(UI自動化和接口自動化)

    從零搭建完整python自動化測試框架(UI自動化和接口自動化)

    總體框架 PO模式、DDT數(shù)據(jù)驅動、驅動 框架技術選擇 框架運行結果 各用例對應的定義方式(PO/DDT) 測試執(zhí)行結果 從零開始搭建項目 一、開發(fā)環(huán)境搭建 二、新建項目 三、基礎功能實現(xiàn) 1. 配置功能實現(xiàn)(Conf) 2. 日志功能實現(xiàn)(Log) 3. 讀取EXCEL實現(xiàn)(data) 4. 郵件發(fā)送實

    2024年02月04日
    瀏覽(35)
  • Python + Selenium,分分鐘搭建 Web 自動化測試框架!

    Python + Selenium,分分鐘搭建 Web 自動化測試框架!

    在程序員的世界中,一切重復性的工作,都應該通過程序自動執(zhí)行。 「自動化測試」就是一個最好的例子。 隨著互聯(lián)網(wǎng)應用開發(fā)周期越來越短,迭代速度越來越快,只會點點點,不懂開發(fā)的手工測試,已經(jīng)無法滿足如今的業(yè)務要求,只能被企業(yè)逐步裁員淘汰。 「自動化測試

    2024年02月02日
    瀏覽(29)
  • web自動化測試框架落地實施全過程-測試環(huán)境搭建 (Selenium+Python)

    web自動化測試框架落地實施全過程-測試環(huán)境搭建 (Selenium+Python)

    Web自動化測試是指使用自動化工具模擬用戶在Web瀏覽器中執(zhí)行的操作,通過編寫腳本來自動化執(zhí)行測試用例,以驗證Web應用程序的功能、性能和兼容性等方面的質(zhì)量。其主要目的是降低測試成本和時間,并提高測試效率和準確性。 Web自動化測試通常包括以下步驟: 確定測試

    2024年02月09日
    瀏覽(20)
  • selenium-基于UI的自動化測試框架

    selenium-基于UI的自動化測試框架

    ??自動化測試是指軟件測試的自動化,在預設狀態(tài)下運行應用程序或者系統(tǒng),預設條件包括正常和異常,最后評估運行結果,將人為驅動的測試行為轉化為機器執(zhí)行的過程 ??自動化測試包括UI自動化、接口自動化、單元測試自動化。按照這個金字塔模型來進行自動化測試

    2024年02月05日
    瀏覽(38)
  • Python Selenium UI自動化測試_python 自動化ui測試

    Python Selenium UI自動化測試_python 自動化ui測試

    2.2 安裝selenium pip install selenium pip install selenium==2.53.0 2.3 下載webdriver驅動 以chrome瀏覽器為例 查看chrome瀏覽器版本:在地址欄輸入 chrome://version chromedriver下載地址:http://chromedriver.storage.googleapis.com/index.html 下載與瀏覽器版本對應的chrome driver 將下載好的chrome driver 解壓,并放至到

    2024年04月14日
    瀏覽(26)
  • UI自動化測試篇 :Selenium2(Webdriver)&TestNG自動化測試環(huán)境搭建

    UI自動化測試篇 :Selenium2(Webdriver)&TestNG自動化測試環(huán)境搭建

    ??? 交流討論: 歡迎加入我們一起學習! ?? 資源分享 : 耗時200+小時精選的「軟件測試」資料包 ??? 教程推薦: 火遍全網(wǎng)的《軟件測試》教程?? ?? 歡迎點贊 ?? 收藏 ?留言 ?? 如有錯誤敬請指正! ?? 最開始學習UI自動化,用的工具是QTP10,用起來確實比較容易上手

    2024年03月10日
    瀏覽(31)
  • 基于Selenium的Web UI自動化測試框架開發(fā)實戰(zhàn)

    基于Selenium的Web UI自動化測試框架開發(fā)實戰(zhàn)

    1、自研自動化測試框架 首先進行需求分析。概要設計包括以下三大模塊: 公共函數(shù)庫模塊(包括可復用函數(shù)庫、日志管理、報表管理及發(fā)送郵件管理); 測試用例倉庫模塊(具體用例的相關管理); 可視化頁面管理模塊(單獨針對Web頁面進行抽象,封裝頁面元素和操作方

    2024年01月20日
    瀏覽(114)
  • python+selenium封裝UI自動化框架

    python+selenium封裝UI自動化框架

    seleinum框架 框架的思想: 解決我們測試過程中的問題:大量的重復步驟,用自動化來實現(xiàn) 1)配置和程序的分離 2)測試數(shù)據(jù)和程序的分離 3)不懂編程的人員可以方便使用:使用的時候不需要寫程序 4)有日志功能,實現(xiàn)無人值守 5)自動發(fā)報告 6)框架中不要有重復的代碼,

    2024年02月09日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包