日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

拋磚引玉:Redis 與 接口自動化測試框架的結合

來源: 責編: 時間:2023-09-18 21:41:49 405觀看
導讀接口自動化測試已成為保證軟件質量和穩定性的重要手段。而Redis作為一個高性能的緩存數據庫,具備快速讀寫、多種數據結構等特點,為接口自動化測試提供了強大的支持。勇哥這里粗略介紹如何結合Python操作Redis,并將其應用

接口自動化測試已成為保證軟件質量和穩定性的重要手段。而Redis作為一個高性能的緩存數據庫,具備快速讀寫、多種數據結構等特點,為接口自動化測試提供了強大的支持。勇哥這里粗略介紹如何結合Python操作Redis,并將其應用于接口自動化測試框架中,以提升測試效率和數據管理能力。8Nw28資訊網——每日最新資訊28at.com

8Nw28資訊網——每日最新資訊28at.com

Redis 基本操作

(1) Redis的安裝和配置8Nw28資訊網——每日最新資訊28at.com

在開始之前,首先需要安裝Redis并進行相應的配置:8Nw28資訊網——每日最新資訊28at.com

  • redis官網:https://redis.io/
  • redis中文網:https://www.redis.cn/

安裝完成后,確保Redis服務已成功啟動,并正確配置了連接信息(如主機地址、端口號、密碼等),這塊信息就不過多介紹了喲!8Nw28資訊網——每日最新資訊28at.com

(2) Redis與接口自動化測試框架的集成8Nw28資訊網——每日最新資訊28at.com

使用Python操作Redis需要導入相應的客戶端庫,例如:8Nw28資訊網——每日最新資訊28at.com

pip install redisimport redis

(3) 初始化Redis連接8Nw28資訊網——每日最新資訊28at.com

在接口自動化測試框架的初始化過程中,可以添加連接Redis的代碼,確保測試過程中能夠與Redis建立連接。8Nw28資訊網——每日最新資訊28at.com

class TestFramework:    def __init__(self):        self.redis = redis.Redis(host='localhost', port=6379, password='your_password')

操作 Redis 常用命令

(4) 字符串操作8Nw28資訊網——每日最新資訊28at.com

# 設置鍵為"key1"的字符串值為"Hello, Redis!"r.set('key1', 'Hello, Redis!')# 獲取鍵為"key1"的字符串值value = r.get('key1')print(value)  # 輸出: b'Hello, Redis!'

(5) 列表操作8Nw28資訊網——每日最新資訊28at.com

# 向名為"list1"的列表左側插入元素r.lpush('list1', 'item1')r.lpush('list1', 'item2')r.lpush('list1', 'item3')# 獲取名為"list1"的列表所有元素items = r.lrange('list1', 0, -1)print(items)  # 輸出: [b'item3', b'item2', b'item1']

(6) 哈希表操作8Nw28資訊網——每日最新資訊28at.com

# 設置名為"hash1"的哈希表字段和值r.hset('hash1', 'field1', 'value1')r.hset('hash1', 'field2', 'value2')# 獲取名為"hash1"的哈希表字段和值value1 = r.hget('hash1', 'field1')value2 = r.hget('hash1', 'field2')print(value1, value2)  # 輸出: b'value1' b'value2'

(7) 集合操作8Nw28資訊網——每日最新資訊28at.com

# 向名為"set1"的集合添加元素r.sadd('set1', 'item1')r.sadd('set1', 'item2')r.sadd('set1', 'item3')# 獲取名為"set1"的集合所有元素items = r.smembers('set1')print(items)  # 輸出: {b'item1', b'item2', b'item3'}

以上就是 redis 的常見操作,是不是比寫 `sql` 語句簡單,是不是 `so easy!!`8Nw28資訊網——每日最新資訊28at.com

Redis 在接口自動化中的應用

(1) 封裝Redis操作方法8Nw28資訊網——每日最新資訊28at.com

為了方便接口自動化測試框架使用,又要開始封裝了,簡單封裝代碼如下:8Nw28資訊網——每日最新資訊28at.com

class RedisClient:    def __init__(self):        self.redis = redis.Redis(host='localhost', port=6379, password='your_password')    def set_data(self, key, value, expire_time=None):        self.redis.set(key, value)        if expire_time is not None:            self.redis.expire(key, expire_time)    def get_data(self, key):        return self.redis.get(key)    def delete_data(self, key):        self.redis.delete(key)    def hash_set_field(self, key, field, value):        self.redis.hset(key, field, value)    def hash_get_field(self, key, field):        return self.redis.hget(key, field)    def hash_delete_field(self, key, field):        self.redis.hdel(key, field)

接口自動化中比較常用的是字符串了,為了滿足更多場景的需求,我們價格哈希數據結構的封裝操作方法。8Nw28資訊網——每日最新資訊28at.com

接口自動化測試中的常見應用場景

(1) 測試數據管理8Nw28資訊網——每日最新資訊28at.com

接口自動化測試中,將測試數據存儲在Redis中,如用戶信息、配置參數等。通過使用封裝的Redis操作方法,可以方便地進行數據的增、刪、改、查。8Nw28資訊網——每日最新資訊28at.com

redis_client= RedisClient()redis_client.set_data('user:1', '{"name": "kira", "age": 18}')user = redis_client.get_data('user:1')print(user.decode())  # 輸出:{"name": "kira", "age": 18}

(2) 處理接口依賴數據8Nw28資訊網——每日最新資訊28at.com

一般步驟如下:8Nw28資訊網——每日最新資訊28at.com

  • 先明確接口的依賴關系: 誰調用誰之前要先調用誰或者誰
  • 設置數據到redis:也就是接口B執行成功后,將關鍵數據存redis,可以使用我們封裝的set,健一般是一個標識符,值就是接口的返回值
  • 從redis獲取數據:比如接口A執行前,先獲取B數據存Redis,然后調用redis獲取數據給A或者B、C 等等。

上代碼:8Nw28資訊網——每日最新資訊28at.com

redis_client = RedisClient()# 第一個接口,設置依賴數據def first_api():    response = requests.get('https://api.example.com/first')    data = response.json()    redis_client.set_data('key', data['value'])def second_api():    # 獲取依賴數據    dependency_data = redis_client.get_data('key')    response = requests.post('https://api.example.com/second', data={'data': dependency_data})    result = response.json()    # 處理接口響應結果if __name__ == '__main__':    first_api()    second_api()

(3) 緩存管理8Nw28資訊網——每日最新資訊28at.com

遇到需要頻繁訪問的接口,怎么半?8Nw28資訊網——每日最新資訊28at.com

為了減少接口調用的開銷和提高測試效率,可以使用Redis作為緩存工具,將接口的響應結果緩存起來,以便后續的測試用例重復使用。8Nw28資訊網——每日最新資訊28at.com

redis_client= RedisClient()def get_user_info(user_id):    cache_key = f'user:{user_id}'    user_info = redis_client.get_data(cache_key)    if not user_info:        # 調用接口獲取用戶信息        user_info = api.get_user_info(user_id)        redis_client.set_data(cache_key, user_info, expire_time=3600)    return user_info

咱們首先檢查Redis緩存中是否已存在對應的用戶信息,如果不存在,則調用接口獲取用戶信息并將其存儲到Redis緩存中,以備后續使用。同時,通過設置expire_time參數,可以為緩存數據設置過期時間,避免過期數據的使用。8Nw28資訊網——每日最新資訊28at.com

(4) 并發測試8Nw28資訊網——每日最新資訊28at.com

在自動化測試中,針對并發場景的測試很重要,我們可以并發模擬一些實際場景,比如:利用redis的原子性和分布式鎖,為每個用戶創建一個唯一的標識,存到redis中,這樣不同用戶請求就可以通過檢查和比對redis的結果來模擬并發訪問了,例如:8Nw28資訊網——每日最新資訊28at.com

# 創建 Redis 客戶端redis_client = RedisClient()def get_user_info(user_id):    cache_key = f'user:{user_id}'    user_info = redis_client.get_data(cache_key)    if not user_info:        # 調用接口獲取用戶信息        response = requests.get(f'http://127.0.0.1:5000/?user_id={user_id}')        if response.status_code == 200:            user_info = response.text            print(user_info)            redis_client.set_data(cache_key, user_info, expire_time=3600)        else:            print(f"Failed to retrieve user info for user_id: {user_id}. Status code: {response.status_code}")    return user_info# 并發測試函數def run_concurrent_test(user_ids):    with concurrent.futures.ThreadPoolExecutor() as executor:        # 提交任務到線程池        future_to_user_id = {executor.submit(get_user_info, user_id): user_id for user_id in user_ids}        # 處理返回結果        for future in concurrent.futures.as_completed(future_to_user_id):            user_id = future_to_user_id[future]            try:                user_info = future.result()                print(f"user_id: {user_id}; user_info: {user_info}")            except Exception as e:                print(f"Error occurred for user_id: {user_id}, Error: {str(e)}")if __name__ == '__main__':    u_ids = [i for i in range(10, 99)]    run_concurrent_test(u_ids)

我們創建線程池,使用submit 將任務(get_user_info)提交到線程池,每個任務一個 user_id,這里簡單打印每個用戶id,對于的信息,通過并發執行多任務,可以同一時間內獲取多個用戶信息,提高測試效率。8Nw28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-10470-0.html拋磚引玉:Redis 與 接口自動化測試框架的結合

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 分布式事務原理及解決方案

下一篇: 使用上 Spring 的事件機制,真香!

標簽:
  • 熱門焦點
  • 三言兩語說透設計模式的藝術-簡單工廠模式

    一、寫在前面工廠模式是最常見的一種創建型設計模式,通常說的工廠模式指的是工廠方法模式,是使用頻率最高的工廠模式。簡單工廠模式又稱為靜態工廠方法模式,不屬于GoF 23種設計
  • 線程通訊的三種方法!通俗易懂

    線程通信是指多個線程之間通過某種機制進行協調和交互,例如,線程等待和通知機制就是線程通訊的主要手段之一。 在 Java 中,線程等待和通知的實現手段有以下幾種方式:Object 類下
  • 如何正確使用:Has和:Nth-Last-Child

    我們可以用CSS檢查,以了解一組元素的數量是否小于或等于一個數字。例如,一個擁有三個或更多子項的grid。你可能會想,為什么需要這樣做呢?在某些情況下,一個組件或一個布局可能會
  • 如何通過Python線程池實現異步編程?

    線程池的概念和基本原理線程池是一種并發處理機制,它可以在程序啟動時創建一組線程,并將它們置于等待任務的狀態。當任務到達時,線程池中的某個線程會被喚醒并執行任務,執行完任
  • 一文搞定Java NIO,以及各種奇葩流

    大家好,我是哪吒。很多朋友問我,如何才能學好IO流,對各種流的概念,云里霧里的,不求甚解。用到的時候,現百度,功能雖然實現了,但是為什么用這個?不知道。更別說效率問題了~下次再遇到,
  • 騰訊蓋樓,字節拆墻

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之“想重溫暴刷深淵、30+技能搭配暴搓到爽的游戲體驗嗎?一起上晶核,即刻暴打!”曾憑借直播騰訊旗下代理格斗游戲《DNF》一
  • 超級標準版旗艦!iQOO 11S全球首發iQOO超算獨顯芯片

    上半年已接近尾聲,截至目前各大品牌旗下的頂級旗艦都已悉數亮相,而下半年即將推出的頂級旗艦已經成為了數碼圈爆料的主流,其中就包括全新的iQOO 11S系
  • iQOO 11S或7月上市:搭載“雞血版”驍龍8Gen2 史上最強5G Soc

    去年底,iQOO推出了“電競旗艦”iQOO 11系列,作為一款性能強機,iQOO 11不僅全球首發2K 144Hz E6全感屏,搭載了第二代驍龍8平臺及144Hz電競屏,同時在快充
  • 英特爾Xe-HP項目終止,將專注Xe-HPC/HPG系列顯卡

    據10 月 31 日消息報道,英特爾高級副總裁兼加速計算系統和圖形事業部總經理 表示,Xe-HP“ Arctic Sound” 系列服務器 GPU 已經應用于 oneAPI devcloud 云服
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久久国际精品| 99re8这里有精品热视频免费| 国产精品日韩一区| 国产精品一二一区| 亚洲第一区在线| 亚洲精品久久久久久久久久久 | 亚洲三级电影全部在线观看高清| 日韩一二在线观看| 亚洲欧美中文另类| 久热精品视频在线观看| 欧美日韩久久久久久| 国产精品午夜在线观看| 在线精品视频在线观看高清| a91a精品视频在线观看| 久久aⅴ国产欧美74aaa| 欧美好吊妞视频| 国产精品免费看| 在线免费精品视频| 亚洲一区二区精品视频| 久久亚洲色图| 国产精品美女久久| 在线成人av| 亚洲一区一卡| 欧美mv日韩mv国产网站app| 国产精品蜜臀在线观看| 亚洲国产精品999| 亚洲男女毛片无遮挡| 欧美成人免费网站| 国产日韩欧美亚洲| 99精品国产一区二区青青牛奶| 欧美一区二区三区视频在线 | 亚洲自拍啪啪| 美女脱光内衣内裤视频久久影院 | 国产精品毛片高清在线完整版| 在线观看中文字幕不卡| 亚洲综合视频一区| 欧美风情在线观看| 国产一区二区三区免费在线观看| 一区二区三区四区五区精品视频| 久久久无码精品亚洲日韩按摩| 欧美午夜精品久久久久久浪潮 | 黄色免费成人| 亚洲淫片在线视频| 欧美精品在线一区二区| 精品1区2区| 午夜精品视频一区| 欧美日韩亚洲激情| 亚洲黄色成人| 久久久精品久久久久| 国产精品美女久久久免费| 日韩写真在线| 你懂的视频一区二区| 国外成人在线视频| 欧美一区二区三区四区在线观看 | 久久精品中文| 国产麻豆精品视频| 亚洲一区视频| 欧美日韩一区二区高清| 亚洲精品国精品久久99热一| 久久久久久一区二区| 国产农村妇女精品一区二区| 亚洲图片在线观看| 欧美日韩国产一级片| 91久久国产精品91久久性色| 久久亚洲精品一区二区| 国产主播在线一区| 久久国产精品99国产精| 国产日韩在线播放| 欧美一级视频免费在线观看| 国产精品天天摸av网| 亚洲永久视频| 国产精品老女人精品视频| 国产精品99久久久久久久vr | 午夜电影亚洲| 国产精品婷婷午夜在线观看| 亚洲欧美激情诱惑| 国产精品天天摸av网| 亚洲综合精品四区| 国产精品视频第一区| 亚洲综合日韩| 国产欧美亚洲日本| 欧美在线3区| 国产一区二区三区最好精华液| 欧美一区二区性| 国产亚洲激情视频在线| 欧美伊人久久久久久久久影院 | 亚洲国产成人tv| 免费人成网站在线观看欧美高清| …久久精品99久久香蕉国产| 免费观看一区| 亚洲精品中文字幕有码专区| 欧美日韩大片一区二区三区| aa成人免费视频| 国产精品s色| 西瓜成人精品人成网站| 国产亚洲观看| 久久在线免费视频| 亚洲精品一区二区三区在线观看| 欧美精品久久久久久久免费观看 | 亚洲国产小视频在线观看| 欧美电影免费观看大全| 一本色道久久综合一区| 国产精品久久久久毛片软件| 欧美一区二区三区日韩| 黄色一区三区| 欧美精品 日韩| 亚洲一二三区在线| 国产午夜精品久久久久久久| 久久野战av| 亚洲精一区二区三区| 国产精品啊v在线| 久久精品国产久精国产一老狼| 亚洲二区三区四区| 欧美日韩精品免费看| 午夜精品在线| 亚洲第一精品夜夜躁人人躁 | 国产亚洲欧美一区二区| 免费看亚洲片| 亚洲最新中文字幕| 国产精品视频在线观看| 美女精品国产| 宅男精品导航| 国内一区二区在线视频观看| 欧美电影免费观看高清完整版| 中文国产成人精品| 国产综合久久久久影院| 欧美激情一区二区三区在线视频 | 欧美日韩色一区| 午夜久久电影网| 亚洲第一狼人社区| 国产精品成人一区二区网站软件| 久久精彩视频| 亚洲精品在线观看免费| 国产欧美日韩在线视频| 欧美高清在线视频| 欧美一区二区三区免费观看| 日韩午夜在线电影| 国模叶桐国产精品一区| 欧美日韩三级视频| 久久午夜视频| 亚洲一二三级电影| 在线日韩av永久免费观看| 国产精品激情av在线播放| 久久综合久久综合久久综合| 亚洲午夜久久久久久久久电影院 | 亚洲国产精品久久久久久女王| 国产精品久久福利| 免费日韩成人| 性色av一区二区三区在线观看| 亚洲激情成人网| 国产日韩在线一区| 欧美日韩三级| 久久午夜精品一区二区| 亚洲一区二区综合| 91久久亚洲| 合欧美一区二区三区| 国产精品成人午夜| 欧美激情精品久久久久久大尺度| 欧美专区在线观看一区| 中文av字幕一区| 91久久精品国产91久久性色tv| 国产一区二区三区四区hd| 国产精品chinese| 欧美高清在线一区二区| 久热国产精品视频| 久久精品国产99国产精品澳门| 亚洲一区二区毛片| 夜夜嗨网站十八久久| 亚洲激情网站| 精品福利电影| 国产综合久久久久久鬼色| 国产精品日本一区二区| 欧美日韩精品一区二区在线播放| 久热精品视频在线观看| 久久久999成人| 午夜亚洲一区| 亚洲欧美日韩国产一区| 中日韩高清电影网| 99精品久久久| 亚洲久久一区| 亚洲精选91| 亚洲日本无吗高清不卡| 亚洲黑丝在线| 亚洲国产一区二区三区高清| 在线不卡中文字幕播放| 一区二区三区在线视频播放| 国产一区视频网站| 国产一本一道久久香蕉| 国产性天天综合网| 国产视频久久久久久久| 国产欧美日韩在线视频| 国产日韩欧美在线播放| 国产亚洲日本欧美韩国| 国产亚洲欧美激情| 国产一区在线看| 狠狠干狠狠久久| 在线视频国产日韩| 91久久在线| 99精品视频免费观看| 一区二区精品| 亚洲一区三区在线观看| 亚洲欧美日韩直播| 欧美一区二区三区的| 久久九九精品99国产精品|