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

Selenium + Pytest自動化測試框架實戰(zhàn)(上)

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

Selenium + Pytest自動化測試框架實戰(zhàn)(上),自動化測試,軟件測試,測試工程師,selenium,pytest,測試工具,自動化測試,功能測試,軟件測試

前言

今天呢筆者想和大家來聊聊selenium自動化+ pytest測試框架,在這篇文章里你需要知道一定的python基礎(chǔ)——至少明白類與對象,封裝繼承;一定的selenium基礎(chǔ)。這篇文章不會selenium,不會的可以自己去看selenium中文翻譯網(wǎng)喲。

Selenium + Pytest自動化測試框架實戰(zhàn)(上),自動化測試,軟件測試,測試工程師,selenium,pytest,測試工具,自動化測試,功能測試,軟件測試

一、測試框架簡介

測試框架有什么優(yōu)點呢

    • 代碼復(fù)用率高,如果不使用框架的話,代碼會很冗余
    • 可以組裝日志、報告、郵件等一些高級功能
    • 提高元素等數(shù)據(jù)的可維護性,元素發(fā)生變化時,只需要更新一下配置文件
    • 使用更靈活的PageObject設(shè)計模式
  • 測試框架的整體目錄
  • 目錄/文件說明是否為python包common這個包中存放的是常見的通用的類,如讀取配置文件是config配置文件目錄是logs日志目錄page對selenium的方放進行深度的封裝是page_element頁面元素存放目錄page_object頁面對象POM設(shè)計模式,TestCase所有的測試用例集是utils工具類是script腳本文件conftest.pypytest膠水文件pytest.inipytest配置文件,這樣一個簡單的框架結(jié)構(gòu)就清晰了。

知道了以上這些我們就開始吧!

我們在項目中先按照上面的框架指引,建好每一項目錄。

注意:python包為是的,都需要添加一個__init__.py文件以標(biāo)識此目錄為一個python包。

二、管理時間

首先呢,因為我們很多的模塊會用到時間戳,或者日期等等字符串,所以我們先單獨把時間封裝成一個模塊。

然后讓其他模塊來調(diào)用即可。在utils目錄新建times.py模塊

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import time
import datetime
from functools import wraps


def timestamp():
    """時間戳"""
    return time.time()


def dt_strftime(fmt="%Y%m"):
    """
    datetime格式化時間
    :param fmt "%Y%m%d %H%M%S
    """
    return datetime.datetime.now().strftime(fmt)


def sleep(seconds=1.0):
    """
    睡眠時間
    """
    time.sleep(seconds)


def running_time(func):
    """函數(shù)運行時間"""

    @wraps(func)
    def wrapper(*args, **kwargs):
        start = timestamp()
        res = func(*args, **kwargs)
        print("校驗元素done!用時%.3f秒!" % (timestamp() - start))
        return res

    return wrapper


if __name__ == '__main__':
    print(dt_strftime("%Y%m%d%H%M%S"))

現(xiàn)在我也找了很多測試的朋友,做了一個分享技術(shù)的交流群,共享了很多我們收集的技術(shù)文檔和視頻教程。
如果你不想再體驗自學(xué)時找不到資源,沒人解答問題,堅持幾天便放棄的感受
可以加入我們一起交流。而且還有很多在自動化,性能,安全,測試開發(fā)等等方面有一定建樹的技術(shù)大牛
分享他們的經(jīng)驗,還會分享很多直播講座和技術(shù)沙龍
可以免費學(xué)習(xí)!劃重點!開源的!??!
qq群號:691998057【暗號:csdn999】

Selenium + Pytest自動化測試框架實戰(zhàn)(上),自動化測試,軟件測試,測試工程師,selenium,pytest,測試工具,自動化測試,功能測試,軟件測試

三、添加配置文件

配置文件是項目中必不可少的部分!

將固定不變的信息集中在固定的文件中

3.1conf.py

項目中都應(yīng)該有一個文件對整體的目錄進行管理,我也在這個python項目中設(shè)置了此文件。

在項目config目錄創(chuàng)建conf.py文件,所有的目錄配置信息寫在這個文件里面。

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import os
from selenium.webdriver.common.by import By
from utils.times import dt_strftime


class ConfigManager(object):
    # 項目目錄
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

    # 頁面元素目錄
    ELEMENT_PATH = os.path.join(BASE_DIR, 'page_element')

    # 報告文件
    REPORT_FILE = os.path.join(BASE_DIR, 'report.html')

    # 元素定位的類型
    LOCATE_MODE = {
        'css': By.CSS_SELECTOR,
        'xpath': By.XPATH,
        'name': By.NAME,
        'id': By.ID,
        'class': By.CLASS_NAME
    }

    # 郵件信息
    EMAIL_INFO = {
        'username': '1234567890@qq.com',  # 切換成你自己的地址
        'password': 'QQ郵箱授權(quán)碼',
        'smtp_host': 'smtp.qq.com',
        'smtp_port': 123
    }

    # 收件人
    ADDRESSEE = [
        '1234567890@qq.com',
    ]

    @property
    def log_file(self):
        """日志目錄"""
        log_dir = os.path.join(self.BASE_DIR, 'logs')
        if not os.path.exists(log_dir):
            os.makedirs(log_dir)
        return os.path.join(log_dir, '{}.log'.format(dt_strftime()))

    @property
    def ini_file(self):
        """配置文件"""
        ini_file = os.path.join(self.BASE_DIR, 'config', 'config.ini')
        if not os.path.exists(ini_file):
            raise FileNotFoundError("配置文件%s不存在!" % ini_file)
        return ini_file


cm = ConfigManager()
if __name__ == '__main__':
    print(cm.BASE_DIR)

注意:QQ郵箱授權(quán)碼怎么生成自己去百度

這個conf文件我模仿了Django的settings.py文件的設(shè)置風(fēng)格,但是又有些許差異。

在這個文件中我們可以設(shè)置自己的各個目錄,也可以查看自己當(dāng)前的目錄。

遵循了約定:不變的常量名全部大寫,函數(shù)名小寫??雌饋碚w美觀。

3.2config.ini

在項目config目錄新建一個config.ini文件,里面暫時先放入我們的需要測試的URL

[HOST]
HOST = https://www.baidu.com

四、讀取配置文件

配置文件創(chuàng)建好了,接下來我們需要讀取這個配置文件以及使用里面的信息。

我們在common目錄中新建一個readconfig.py文件

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import configparser
from config.conf import cm

HOST = 'HOST'


class ReadConfig(object):
    """配置文件"""

    def __init__(self):
        self.config = configparser.RawConfigParser()  # 當(dāng)有%的符號時請使用Raw讀取
        self.config.read(cm.ini_file, encoding='utf-8')

    def _get(self, section, option):
        """獲取"""
        return self.config.get(section, option)

    def _set(self, section, option, value):
        """更新"""
        self.config.set(section, option, value)
        with open(cm.ini_file, 'w') as f:
            self.config.write(f)

    @property
    def url(self):
        return self._get(HOST, HOST)


ini = ReadConfig()

if __name__ == '__main__':
    print(ini.url)

可以看到我們用python內(nèi)置的configparser模塊對config.ini文件進行了讀取。

對于url值的提取,我使用了高階語法@property屬性值,寫法更簡單。

五、記錄操作日志

日志,大家應(yīng)該都很熟悉這個名詞,就是記錄代碼中的動作。

在utils目錄中新建logger.py文件。

這個文件就是我們用來在自動化測試過程中記錄一些操作步驟的。

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import logging
from config.conf import cm


class Log:
    def __init__(self):
        self.logger = logging.getLogger()
        if not self.logger.handlers:
            self.logger.setLevel(logging.DEBUG)

            # 創(chuàng)建一個handle寫入文件
            fh = logging.FileHandler(cm.log_file, encoding='utf-8')
            fh.setLevel(logging.INFO)

            # 創(chuàng)建一個handle輸出到控制臺
            ch = logging.StreamHandler()
            ch.setLevel(logging.INFO)

            # 定義輸出的格式
            formatter = logging.Formatter(self.fmt)
            fh.setFormatter(formatter)
            ch.setFormatter(formatter)

            # 添加到handle
            self.logger.addHandler(fh)
            self.logger.addHandler(ch)

    @property
    def fmt(self):
        return '%(levelname)s\t%(asctime)s\t[%(filename)s:%(lineno)d]\t%(message)s'


log = Log().logger

if __name__ == '__main__':
    log.info('hello world')

在終端中運行該文件,就看到命令行打印出了:

INFO	2022-06-15 16:00:05,467	[logger.py:38]	hello world

然后在項目logs目錄下生成了當(dāng)月的日志文件。

六、簡單理解POM模型

由于下面要講元素相關(guān)的,所以首先理解一下POM模型

Page Object模式具有以下幾個優(yōu)點。

該觀點來自 《Selenium自動化測試——基于Python語言》

  • 抽象出對象可以最大程度地降低開發(fā)人員修改頁面代碼對測試的影響, 所以, 你僅需要對頁
    面對象進行調(diào)整, 而對測試沒有影響;
  • 可以在多個測試用例中復(fù)用一部分測試代碼;
  • 測試代碼變得更易讀、 靈活、 可維護

Page Object模式圖

Selenium + Pytest自動化測試框架實戰(zhàn)(上),自動化測試,軟件測試,測試工程師,selenium,pytest,測試工具,自動化測試,功能測試,軟件測試

  • basepage ——selenium的基類,對selenium的方法進行封裝
  • pageelements——頁面元素,把頁面元素單獨提取出來,放入一個文件中
  • searchpage ——頁面對象類,把selenium方法和頁面元素進行整合
  • testcase ——使用pytest對整合的searchpage進行測試用例編寫

通過上圖我們可以看出,通過POM模型思想,我們把:

  • selenium方法
  • 頁面元素
  • 頁面對象
  • 測試用例

以上四種代碼主體進行了拆分,雖然在用例很少的情況下做會增加代碼,但是當(dāng)用例多的時候意義很大,代碼量會在用例增加的時候顯著減少。我們維護代碼變得更加直觀明顯,代碼可讀性也變得比工廠模式強很多,代碼復(fù)用率也極大的得到了提高。

這篇文章暫時到這里喲,后面會接著講的喲。

下面是配套資料,對于做【軟件測試】的朋友來說應(yīng)該是最全面最完整的備戰(zhàn)倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!

Selenium + Pytest自動化測試框架實戰(zhàn)(上),自動化測試,軟件測試,測試工程師,selenium,pytest,測試工具,自動化測試,功能測試,軟件測試

最后: 可以在公眾號:自動化測試老司機?! 免費領(lǐng)取一份216頁軟件測試工程師面試寶典文檔資料。以及相對應(yīng)的視頻學(xué)習(xí)教程免費分享!,其中包括了有基礎(chǔ)知識、Linux必備、Shell、互聯(lián)網(wǎng)程序原理、Mysql數(shù)據(jù)庫、抓包工具專題、接口測試工具、測試進階-Python編程、Web自動化測試、APP自動化測試、接口自動化測試、測試高級持續(xù)集成、測試架構(gòu)開發(fā)測試框架、性能測試、安全測試等。

如果我的博客對你有幫助、如果你喜歡我的博客內(nèi)容,請 “點贊” “評論” “收藏” 一鍵三連哦!文章來源地址http://www.zghlxwxcb.cn/news/detail-859957.html

到了這里,關(guān)于Selenium + Pytest自動化測試框架實戰(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)文章

  • Selenium+Pytest自動化測試框架詳解

    Selenium+Pytest自動化測試框架詳解

    selenium自動化+ pytest測試框架 本章你需要 一定的python基礎(chǔ)——至少明白類與對象,封裝繼承; 一定的selenium基礎(chǔ)——本篇不講selenium,不會的可以自己去看selenium中文翻譯網(wǎng) 測試框架有什么優(yōu)點 代碼復(fù)用率高,如果不使用框架的話,代碼會很冗余 可以組裝日志、報告、郵件等

    2024年02月08日
    瀏覽(25)
  • Pytest+selenium UI自動化測試實戰(zhàn)實例

    Pytest+selenium UI自動化測試實戰(zhàn)實例

    今天來說說pytest吧,經(jīng)過幾周的時間學(xué)習(xí),有收獲也有疑惑,總之最后還是搞個小項目出來證明自己的努力不沒有白費。 1 ? ?確保您已經(jīng)安裝了 python3.x 2 ? ?配置 python3+pycharm+selenium2 開發(fā)環(huán)境 ? ? 3 ? ?安裝pytest庫 pip install pytest 4 ? ?安裝pytest -html 報告插件 pip install pytest

    2024年02月05日
    瀏覽(97)
  • 擁抱自動化測試,快速升職加薪丄Selenium+Pytest自動化測試框架教你如何做到

    擁抱自動化測試,快速升職加薪丄Selenium+Pytest自動化測試框架教你如何做到

    引言 Selenium+Pytest自動化測試框架是目前最流行的自動化測試工具之一,其強大的功能和易用性援助許多開發(fā)人員和測試人員。 selenium自動化+ pytest測試框架禪道實戰(zhàn) 選用的測試網(wǎng)址為我電腦本地搭建的禪道 conftest.py更改 config.ini更改 conf.py更改 page更改 page_element更改 page_obje

    2023年04月24日
    瀏覽(21)
  • Pytest+Selenium UI自動化測試實戰(zhàn)實例(全)

    Pytest+Selenium UI自動化測試實戰(zhàn)實例(全)

    ?? 視頻學(xué)習(xí): 文末有免費的配套視頻可觀看 ???關(guān)注公眾號【互聯(lián)網(wǎng)雜貨鋪】,回復(fù) 1?, 免費獲取軟件測試全套資料,資料在手,漲薪更快 今天來說說pytest吧,經(jīng)過幾周的時間學(xué)習(xí),有收獲也有疑惑,總之最后還是搞個小項目出來證明自己的努力不沒有白費 1 ? ?確保您

    2024年03月19日
    瀏覽(91)
  • 【Pytest實戰(zhàn)】Pytest+Allure+Jenkins自動化測試框架搭建

    【Pytest實戰(zhàn)】Pytest+Allure+Jenkins自動化測試框架搭建

    ??作者簡介: 小曾同學(xué).com,一個致力于測試開發(fā)的博主??,主要職責(zé):測試開發(fā)、CI/CD 如果文章知識點有錯誤的地方,還請大家指正,讓我們一起學(xué)習(xí),一起進步。?? 座右銘:不想當(dāng)開發(fā)的測試,不是一個好測試??。 如果感覺博主的文章還不錯的話,還請點贊、收藏哦

    2024年02月15日
    瀏覽(96)
  • Pytest+selenium+allure+Jenkins自動化測試框架搭建及使用

    Pytest+selenium+allure+Jenkins自動化測試框架搭建及使用

    一、 ? ?環(huán)境搭建 1. ? ?Python下載及安裝 Python可應(yīng)用于多平臺包括windows, Linux 和 Mac OS X, 本文主要介紹windows環(huán)境下。你可以通過終端窗口輸入 \\\"python\\\" 命令來查看本地是否已經(jīng)安裝Python以及Python的安裝版本。 ? ? 如未安裝python, 推薦下載python 3.8.3以上版本,本文主要介紹window

    2024年01月18日
    瀏覽(99)
  • Web UI 自動化測試框架(Pytest+Selenium+Allure+Loguru)

    本框架主要是基于 Python + pytest + selenium + Allure + loguru + 郵件通知/企業(yè)微信通知/釘釘通知 實現(xiàn)的WEB UI自動化框架。 基于PageObject設(shè)計模式結(jié)合,該平臺可實現(xiàn)測試用例的自動化執(zhí)行及自動化測試報告的生成同時包括自動化測試執(zhí)行時,用例失敗的截圖操作。 使用webdriver_manag

    2024年02月04日
    瀏覽(363)
  • 接口自動化測試實戰(zhàn)之pytest框架+allure講解

    接口自動化測試實戰(zhàn)之pytest框架+allure講解

    本文章主要會講解Python中pytest框架的講解,介紹什么是pytest、為何要測試、為何使用以及參考和擴展等等,話不多說,咱們直接進入主題喲。 pytest是一款單元測試框架,在編程過程中,單元主要指的是代碼中最小的組成部分,例如函數(shù)或類,在面向?qū)ο笾校钚〉膯卧褪穷?/p>

    2024年02月05日
    瀏覽(241)
  • 【附源碼】完整版,Python+Selenium+Pytest+POM自動化測試框架封裝

    【附源碼】完整版,Python+Selenium+Pytest+POM自動化測試框架封裝

    1、測試框架簡介 1)測試框架的優(yōu)點 代碼復(fù)用率高,如果不使用框架的話,代碼會顯得很冗余。 可以組裝日志、報告、郵件等一些高級功能。 提高元素等數(shù)據(jù)的可維護性,元素發(fā)生變化時,只需要更新一下配置文件。 使用更靈活的PageObject設(shè)計模式。 2)測試框架的整體目錄

    2024年02月04日
    瀏覽(33)
  • 超強,Pytest自動化測試框架 fixture 傳參實戰(zhàn)(案例)

    超強,Pytest自動化測試框架 fixture 傳參實戰(zhàn)(案例)

    為了提高復(fù)用性,我們在寫測試用例的時候,會用到不同的fixture,比如:最常見的登錄操作,大部分的用例的前置條件都是登錄 假設(shè)不同的用例想登錄不同的測試賬號,那么登錄fixture就不能把賬號寫死,需要通過傳參的方式來完成登錄操作 案例1:傳單個參數(shù) 執(zhí)行結(jié)果 添加

    2024年02月12日
    瀏覽(18)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包