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

Pytest使用fixture實(shí)現(xiàn)token共享的方法

 更新時(shí)間:2023年11月02日 10:07:23   作者:測試界媛姐  
同學(xué)們在做pytest接口自動(dòng)化時(shí),會(huì)遇到一個(gè)場景就是不同的測試用例需要有一個(gè)登錄的前置步驟,登錄完成后會(huì)獲取到token,用于之后的代碼中,本文給大家介紹Pytest使用fixture實(shí)現(xiàn)token共享的方法,感興趣的朋友一起看看吧

同學(xué)們在做pytest接口自動(dòng)化時(shí),會(huì)遇到一個(gè)場景就是不同的測試用例需要有一個(gè)登錄的前置步驟,登錄完成后會(huì)獲取到token,用于之后的代碼中。首先我先演示一個(gè)常規(guī)的做法。

首先在conftest定義一個(gè)login的方法,方法返回token

@pytest.fixture(scope="function")
def login():
    header = {
            "Content-Type": "application/json"
    }
    data = {
            "username": "test",
            "password": "test"
    }
    login_info = requests.post(url='http://.../login',json=data).json()
    return login_info['token']

在測試用例方法中引入這個(gè)方法,所有用到token,都需要使用login這個(gè)方法。

def test_user(login):
    token = login # 通過login獲取token
    ......
def test_address(login):
    token = login # 通過login獲取token
    ......

通過上面的方法,可以解決接口使用token的需求,不過這么做每次都會(huì)先執(zhí)行l(wèi)ogin接口,有沒有一種方法可以只執(zhí)行一次login接口,后面的接口就不調(diào)用login接口了呢。經(jīng)過老武測試,其實(shí)是可以做到的。

思路:login接口使用緩存,當(dāng)有token的時(shí)候就使用token,就不調(diào)用login接口了,如果沒有則調(diào)用login接口,再把token緩存起來。

那需要對上面login的方法進(jìn)行改造,增加save_token方法,將token存起來。引入pickle模塊,用來寫數(shù)據(jù)。

import pickle
@pytest.fixture(scope="function")
def login():
    ......
    # 增加緩存方法
    save_token(login_info['token'])
    return login_info['token']
def save_token(token):
    # login_path為目錄中一個(gè)存放token的文件路徑,自己定義。
    with open(login_path, 'wb') as f:
        pickle.dump(login_info, f)
        f.close()

上面代碼完成了token的寫入,當(dāng)沒有token的時(shí)候token寫入到文件中。如果有token,我們就不需要執(zhí)行登錄操作,直接使用文件中的token,這個(gè)時(shí)候代碼需要繼續(xù)改造。方法開始時(shí)判斷當(dāng)前是否存在保存token的文件,如果有則獲取token,不再執(zhí)行登錄的操作。再增加一個(gè)讀取文件內(nèi)容的方法get_login_info

import pickle
@pytest.fixture(scope="function")
def login():
    if os.path.exists(login_info):
        return get_login_info(login_info)
    else:
        ......
        # 增加緩存方法
        save_token(login_info['token'])
        return login_info['token']
# 增加一個(gè)讀取文件的方法
def get_login_info():
    with open(login_path, 'rb') as f:
        data = pickle.load(f)
        f.close()
        return data

以上工作已經(jīng)完成了90%,再來個(gè)收尾就完美了。每次執(zhí)行用例結(jié)束后把存token文件刪除,不然生成了一個(gè)token,代碼判斷token文件存在,就不會(huì)去調(diào)用登錄接口。token一但過期,用例就會(huì)執(zhí)行失敗。

在conftest定義一個(gè)方法,每次執(zhí)行用例都清理一下token文件。要注意級(jí)別是session級(jí)別哦。

@pytest.fixture(scope='session', autouse=True)
def clear_login_file():
    if os.path.exists(login_path):
        logger.info("清理token文件")
        os.remove(login_path)

到此這篇關(guān)于Pytest使用fixture實(shí)現(xiàn)token共享的文章就介紹到這了,更多相關(guān)Pytest使用fixture內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python Paramiko創(chuàng)建文件目錄并上傳文件詳解

    Python Paramiko創(chuàng)建文件目錄并上傳文件詳解

    Paramiko是一個(gè)用于進(jìn)行SSH2會(huì)話的Python庫,它支持加密、認(rèn)證和文件傳輸?shù)裙δ?本文旨在詳細(xì)指導(dǎo)新手朋友如何使用Python的Paramiko庫來創(chuàng)建遠(yuǎn)程文件目錄并上傳文件,希望對大家有所幫助
    2024-10-10
  • Python通過列表創(chuàng)建DataFrame的常見方法

    Python通過列表創(chuàng)建DataFrame的常見方法

    本文介紹了通過列表創(chuàng)建DataFrame的多種方法,包括單層/嵌套列表、指定索引、處理不均勻長度,并建議使用字典構(gòu)建鍵對關(guān)系數(shù)據(jù),感興趣的朋友跟隨小編一起看看吧
    2025-07-07
  • Django給表單添加honeypot驗(yàn)證增加安全性

    Django給表單添加honeypot驗(yàn)證增加安全性

    這篇文章主要介紹了Django給表單添加honeypot驗(yàn)證增加安全性的方法,幫助大家更好的理解和學(xué)習(xí)使用Django框架,感興趣的朋友可以了解下
    2021-05-05
  • opencv3/C++實(shí)現(xiàn)視頻背景去除建模(BSM)

    opencv3/C++實(shí)現(xiàn)視頻背景去除建模(BSM)

    今天小編就為大家分享一篇opencv3/C++實(shí)現(xiàn)視頻背景去除建模(BSM),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python如何調(diào)用另一個(gè)類的方法和屬性

    Python如何調(diào)用另一個(gè)類的方法和屬性

    在Python面向?qū)ο缶幊讨?類與類之間的交互是非常常見的場景,本文將詳細(xì)介紹在Python中一個(gè)類如何調(diào)用另一個(gè)類的方法和屬性,大家可以根據(jù)需要進(jìn)行選擇
    2025-08-08
  • Python繪制的二項(xiàng)分布概率圖示例

    Python繪制的二項(xiàng)分布概率圖示例

    這篇文章主要介紹了Python繪制的二項(xiàng)分布概率圖,涉及Python基于numpy、math的數(shù)值運(yùn)算及matplotlib圖形繪制相關(guān)操作技巧,需要的朋友可以參考下
    2018-08-08
  • Python實(shí)現(xiàn)多種場景下查找并高亮Word文檔中的文本

    Python實(shí)現(xiàn)多種場景下查找并高亮Word文檔中的文本

    在處理長篇 Word 文檔時(shí),快速定位關(guān)鍵信息并將其突出顯示是一項(xiàng)非常實(shí)用的技能,本文將深入探討如何使用 Python 實(shí)現(xiàn)多種場景下的 Word 文檔文本查找與高亮功能,有需要的小伙伴可以了解下
    2026-03-03
  • OpenCV中resize函數(shù)插值算法的實(shí)現(xiàn)過程(五種)

    OpenCV中resize函數(shù)插值算法的實(shí)現(xiàn)過程(五種)

    最新版OpenCV2.4.7中,cv::resize函數(shù)有五種插值算法:最近鄰、雙線性、雙三次、基于像素區(qū)域關(guān)系、蘭索斯插值。感興趣的可以了解一下
    2021-06-06
  • 使用Python實(shí)現(xiàn)兩組數(shù)據(jù)縱向排序

    使用Python實(shí)現(xiàn)兩組數(shù)據(jù)縱向排序

    在數(shù)據(jù)處理和分析中,排序是一項(xiàng)非常基礎(chǔ)且重要的操作,本文將詳細(xì)介紹如何使用Python對兩組數(shù)據(jù)進(jìn)行縱向排序,即每一列分別進(jìn)行排序,同時(shí)保持?jǐn)?shù)據(jù)的對應(yīng)關(guān)系,需要的可以參考下
    2024-12-12
  • 分享6 個(gè)值得收藏的 Python 代碼

    分享6 個(gè)值得收藏的 Python 代碼

    這篇文章主要分享了6 個(gè)值得收藏的 Python 代碼,希望隊(duì)長正在學(xué)習(xí)的你有所幫助,需要的小伙伴也可以參考一下
    2022-01-01

最新評論

夏津县| 黄平县| 抚州市| 永修县| 文登市| 和田县| 方城县| 肇庆市| 通海县| 田东县| 万全县| 苗栗市| 德清县| 抚松县| 建平县| 阿勒泰市| 宣城市| 龙泉市| 中阳县| 灵寿县| 普洱| 合江县| 安庆市| 新竹县| 宜兰县| 灵川县| 土默特右旗| 乌恰县| 佛山市| 石景山区| 万盛区| 垣曲县| 都安| 上饶市| 米脂县| 榆树市| 开平市| 塔城市| 娄烦县| 枞阳县| 饶平县|