最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pytest全局變量的使用詳解

 更新時間:2023年11月08日 08:29:42   作者:軟件測試果凍  
全局變量是在函數(shù)外部定義的變量,所有函數(shù)內(nèi)部都可以使用這個變量,本文就來介紹一下pytest全局變量的使用,感興趣的可以了解一下

這里重新闡述下PageObject設(shè)計模式:

PageObject設(shè)計模式是selenium自動化最成熟,最受歡迎的一種模式,這里用pytest同樣適用

這里直接提供代碼:

全局變量

conftest.py

"""
conftest.py 全局變量,主要實現(xiàn)以下功能:
1、添加命令行參數(shù)broswer, 用于切換不用瀏覽器
2、全局參數(shù)driver調(diào)用
"""

import pytest
from selenium import webdriver

def pytest_addoption(parser):
    '''
    添加命令行參數(shù) --browser
    '''

    parser.addoption(
        "--browser", action="store", default="firefox", help="browser option: firefox or chrome"
             )

@pytest.fixture(scope='session')   # 以實現(xiàn)多個.py跨文件使用一個session來完成多個用例
def driver(request):
    '''定義全局driver參數(shù)'''
    name = request.config.getoption("--browser")
    if name == "firefox":
        driver = webdriver.Firefox()
    elif name == "chrome":
        driver = webdriver.Chrome()
    else:
        driver = webdriver.Chrome()
    print("正在啟動瀏覽器名稱: %s" % name)
    # 需要登陸就調(diào)用登陸函數(shù)

    def fn():
        print("當(dāng)全部用例執(zhí)行完之后: teardown driver!")
        driver.quit()
    request.addfinalizer(fn)
    return driver

loginpage.py

'''
作者:Caric_lee
日期:2018
'''
import time

from autoTest.pytest_selenium.common.basepage import BasePage
from autoTest.pytest_selenium.common.logging import Log
from autoTest.pytest_selenium.page.mysql_python import Mysql


# 獲取數(shù)據(jù)庫數(shù)據(jù)
mysql_test = Mysql('localhost','3306','root','123456','test')
dataAll = mysql_test.query('select * from auto_test')
username = dataAll[0]['username']
password = dataAll[0]['password']
url = dataAll[0]['url']
print("查詢數(shù)據(jù)庫信息   賬號: %s,  密碼: %s, url: %s" % (username, password, url))

class Login(BasePage):
    log = Log()

    # 斷言登錄頁,提示文本
    hint_text_element = ('xpath', "http://*[@class='crm-login1-header']/h1")
    hint_text = '登錄銷售易'
    # 斷言忘記密碼
    forget_paw_elemet = ('xpath', "http://*[text()='忘記密碼?']")
    forget_paw = '忘記密碼'
    # 斷言免費注冊
    Free_registration_element = ('xpath', "http://*[text()='免費注冊']")
    Free_registration_text = '免費'
    # 斷言'歡迎登錄銷售易'
    tenant_interface = ('xpath', "http://*[text()='歡迎登錄銷售易']")
    tenant_interface_text = '歡迎登錄'
    # 元素定位
    input_username_element = ('xpath', "http://*[@name='loginName']")
    input_paw_element = ('xpath', "http://*[@placeholder='請輸入密碼']")
    click_enter_element = ('xpath', "http://*[text()='登     錄']")
    clikc_tenant_element = ('xpath', "http://span[text()='自動化測試_0202_1109_正式' and @class='crm-company-name']")

    def assert_title(self):
        result = self.is_text_in_element(self.hint_text_element, self.hint_text)
        self.log.info("assert: 斷言登錄頁,提示文本: %s" % result)
    def assert_forget_paw(self):
        result = self.is_text_in_element(self.forget_paw_elemet, self.forget_paw)
        self.log.info("assert: 斷言忘記密碼: %s" % result)
    def assert_Free_registration(self):
        result = self.is_text_in_element(self.Free_registration_element, self.Free_registration_text)
        self.log.info("assert: 斷言免費注冊: %s" % result)
    def input_username(self, username):
        self.send_keys(self.input_username_element, username)
    def input_paw(self, paw):
        self.send_keys(self.input_paw_element, paw)
    def click_enter(self):
        self.click(self.click_enter_element)
    def assert_tenant_interface(self):
        result = self.is_text_in_element(self.tenant_interface, self.tenant_interface_text)
        self.log.info("assert: 歡迎登錄銷售易: %s" % result)
    def move_scroll_end(self):
        time.sleep(3)
        self.js_focus_element(self.clikc_tenant_element) # 這里已經(jīng)可以實現(xiàn)滾動了
        self.log.info("聚焦?jié)L動結(jié)束!")

    def click_tenant(self):  # 選擇租戶
        self.click(self.clikc_tenant_element)
        self.log.info("選擇租戶成功!")

    def login(self, username=username, paw=password):
        '''登錄流程'''
        self.assert_title()     # 斷言登錄頁,提示文本
        self.assert_forget_paw()    # 斷言忘記密碼
        self.assert_Free_registration() # 斷言免費注冊
        self.input_username(username)
        self.input_paw(paw)
        self.click_enter()
        time.sleep(3)
        self.assert_tenant_interface()  # 斷言'歡迎登錄銷售易'
        print("---------------------->>>>>>>>>>>>>")
        self.move_scroll_end()
        self.click_tenant()

if __name__=='__main__':
    from selenium import webdriver
    driver = webdriver.Chrome()
    base = Login(driver)
    driver.get(url)
    driver.maximize_window()
    driver.implicitly_wait(10)
    base.login()

    # 學(xué)習(xí)備注!
    # 調(diào)試某個功能的時候,就只寫這個功能點的代碼去調(diào)
    # 加載轉(zhuǎn)圈是js報錯了,前端的問題,是bug  (滾動條)

test_login.py

'''
作者:Caric_lee
日期:2018
'''
from autoTest.pytest_selenium.page import loginpage
from autoTest.pytest_selenium.page.loginpage import Login
import pytest, time


class Test_login():
    url = loginpage.url
    username_data = loginpage.username
    paw_data = loginpage.password
    print("調(diào)用信息   賬號: %s,  密碼: %s, url: %s" % (username_data, paw_data, url))

    @pytest.fixture(scope="function",  autouse=True)   # function 默認(rèn)參數(shù)傳遞,autouse=True 自動調(diào)用fixture功能
    def test_01(self, driver):
        driver.get(self.url)
        driver.maximize_window()
        driver.implicitly_wait(10)
        self.login = Login(driver)

    def test_02(self):
        '''登錄'''
        # 1、斷言登錄頁,提示文本
        self.login.assert_title()
        # 2、斷言忘記密碼
        self.login.assert_forget_paw()
        # 3、斷言免費注冊
        self.login.assert_Free_registration()
        # 4、輸入賬號
        self.login.input_username(self.username_data)
        # 5、輸入密碼
        self.login.input_paw(self.paw_data)
        # 6、點擊登錄
        self.login.click_enter()
        time.sleep(3)
        # 7、斷言'歡迎登錄銷售易'
        self.login.assert_tenant_interface()
        # 8、滾動到底部
        self.login.move_scroll_end()
        # 9、點擊租戶
        self.login.click_tenant()
        time.sleep(5)

    def test_03(self, driver):
        time.sleep(5)
        driver.quit()

if __name__ == '__main__':
    # 選擇測試瀏覽器
    pytest.main(["-s", "--browser=chrome", "test_login.py"])

這里直接指向test_login.py文件就OK了,

還可以在優(yōu)化,把loginpage中的讀取數(shù)據(jù)庫信息,單獨寫個方法,放在page里面,直接讀取。

數(shù)據(jù)結(jié)構(gòu)還需要在調(diào)整

到此這篇關(guān)于pytest全局變量的使用詳解的文章就介紹到這了,更多相關(guān)pytest全局變量 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python 中文件輸入輸出及os模塊對文件系統(tǒng)的操作方法

    python 中文件輸入輸出及os模塊對文件系統(tǒng)的操作方法

    這篇文章主要介紹了python 中文件輸入輸出及os模塊對文件系統(tǒng)的操作方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-08-08
  • Python讀取Word(.docx)正文信息的方法

    Python讀取Word(.docx)正文信息的方法

    這篇文章主要為大家詳細(xì)介紹了Python讀取Word(.docx)正文信息的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Python正則表達(dá)式完全指南

    Python正則表達(dá)式完全指南

    正則表達(dá)式處理文本有如疾風(fēng)掃秋葉,絕大部分編程語言都內(nèi)置支持正則表達(dá)式,它應(yīng)用在諸如表單驗證、文本提取、替換等場景。下文給大家?guī)砹藀ython正則表達(dá)式指南,需要的的朋友參考下吧
    2017-05-05
  • Python第三方包PrettyTable安裝及用法解析

    Python第三方包PrettyTable安裝及用法解析

    這篇文章主要介紹了Python第三方包PrettyTable安裝及用法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • Python 常用數(shù)據(jù)類型詳解之字符串、列表、字典操作方法

    Python 常用數(shù)據(jù)類型詳解之字符串、列表、字典操作方法

    在Python中,字符串、列表和字典是最常用的數(shù)據(jù)類型,它們在數(shù)據(jù)處理、程序設(shè)計和算法實現(xiàn)中扮演著重要角色,接下來通過本文給大家介紹這三種數(shù)據(jù)類型的特性、操作方法和應(yīng)用場景,幫助你更好地掌握 Python編程,感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • 基于Python實現(xiàn)一個簡單的敏感詞過濾功能

    基于Python實現(xiàn)一個簡單的敏感詞過濾功能

    這篇文章主要介紹了Python實現(xiàn)敏感詞過濾功能的示例,文中通過示例代碼介紹的非常詳細(xì),對我們學(xué)習(xí)python有定的幫助,感興趣的小伙伴們可以參考一下
    2023-06-06
  • 用yum安裝MySQLdb模塊的步驟方法

    用yum安裝MySQLdb模塊的步驟方法

    在python2.7版本中,MySQLdb模塊還不是python的內(nèi)置模塊,但是MySQLdb模塊又是Python與MySQL連接的橋梁,對于作為MySQL DBA又很喜歡Python語言的我來說,MySQLdb真的是必需品呢。所以就需要自己進(jìn)行安裝了,這篇文章就給大家詳細(xì)介紹了關(guān)于用yum安裝MySQLdb模塊的步驟。
    2016-12-12
  • pyautogui自動化控制鼠標(biāo)和鍵盤操作的步驟

    pyautogui自動化控制鼠標(biāo)和鍵盤操作的步驟

    這篇文章主要介紹了pyautogui自動化控制鼠標(biāo)和鍵盤操作的步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 一文帶你了解Python中的雙下方法

    一文帶你了解Python中的雙下方法

    Python中有一些特殊方法的方法名都是以雙下劃線開始和結(jié)束,所以又被稱為雙下方法。本文就來為大家詳細(xì)講講Python中的雙下方法的使用,感興趣的可以了解一下
    2022-07-07
  • python更換國內(nèi)鏡像源三種實用方法

    python更換國內(nèi)鏡像源三種實用方法

    這篇文章主要給大家介紹了關(guān)于python更換國內(nèi)鏡像源三種實用方法的相關(guān)資料,更換Python鏡像源可以幫助解決使用pip安裝包時速度過慢或無法連接的問題,需要的朋友可以參考下
    2023-09-09

最新評論

枣庄市| 石渠县| 台前县| 乌什县| 丰顺县| 温州市| 台中市| 谷城县| 化州市| 永靖县| 古浪县| 新晃| 皋兰县| 当雄县| 林口县| 永福县| 泾源县| 阿克苏市| 中方县| 铁岭市| 睢宁县| 集贤县| 天门市| 广河县| 永靖县| 东海县| 平定县| 上高县| 芜湖市| 儋州市| 延寿县| 江安县| 嘉禾县| 威宁| 诸城市| 贵港市| 虹口区| 娱乐| 塘沽区| 云梦县| 嘉义县|