AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁(yè) > 科技  > 軟件

拋磚引玉:Redis 與 接口自動(dòng)化測(cè)試框架的結(jié)合

來(lái)源: 責(zé)編: 時(shí)間:2023-09-18 21:41:49 346觀看
導(dǎo)讀接口自動(dòng)化測(cè)試已成為保證軟件質(zhì)量和穩(wěn)定性的重要手段。而Redis作為一個(gè)高性能的緩存數(shù)據(jù)庫(kù),具備快速讀寫(xiě)、多種數(shù)據(jù)結(jié)構(gòu)等特點(diǎn),為接口自動(dòng)化測(cè)試提供了強(qiáng)大的支持。勇哥這里粗略介紹如何結(jié)合Python操作Redis,并將其應(yīng)用

接口自動(dòng)化測(cè)試已成為保證軟件質(zhì)量和穩(wěn)定性的重要手段。而Redis作為一個(gè)高性能的緩存數(shù)據(jù)庫(kù),具備快速讀寫(xiě)、多種數(shù)據(jù)結(jié)構(gòu)等特點(diǎn),為接口自動(dòng)化測(cè)試提供了強(qiáng)大的支持。勇哥這里粗略介紹如何結(jié)合Python操作Redis,并將其應(yīng)用于接口自動(dòng)化測(cè)試框架中,以提升測(cè)試效率和數(shù)據(jù)管理能力。Rf428資訊網(wǎng)——每日最新資訊28at.com

Rf428資訊網(wǎng)——每日最新資訊28at.com

Redis 基本操作

(1) Redis的安裝和配置Rf428資訊網(wǎng)——每日最新資訊28at.com

在開(kāi)始之前,首先需要安裝Redis并進(jìn)行相應(yīng)的配置:Rf428資訊網(wǎng)——每日最新資訊28at.com

  • redis官網(wǎng):https://redis.io/
  • redis中文網(wǎng):https://www.redis.cn/

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

(2) Redis與接口自動(dòng)化測(cè)試框架的集成Rf428資訊網(wǎng)——每日最新資訊28at.com

使用Python操作Redis需要導(dǎo)入相應(yīng)的客戶(hù)端庫(kù),例如:Rf428資訊網(wǎng)——每日最新資訊28at.com

pip install redisimport redis

(3) 初始化Redis連接Rf428資訊網(wǎng)——每日最新資訊28at.com

在接口自動(dòng)化測(cè)試框架的初始化過(guò)程中,可以添加連接Redis的代碼,確保測(cè)試過(guò)程中能夠與Redis建立連接。Rf428資訊網(wǎng)——每日最新資訊28at.com

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

操作 Redis 常用命令

(4) 字符串操作Rf428資訊網(wǎng)——每日最新資訊28at.com

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

(5) 列表操作Rf428資訊網(wǎng)——每日最新資訊28at.com

# 向名為"list1"的列表左側(cè)插入元素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) 哈希表操作Rf428資訊網(wǎng)——每日最新資訊28at.com

# 設(shè)置名為"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) 集合操作Rf428資訊網(wǎng)——每日最新資訊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 的常見(jiàn)操作,是不是比寫(xiě) `sql` 語(yǔ)句簡(jiǎn)單,是不是 `so easy!!`Rf428資訊網(wǎng)——每日最新資訊28at.com

Redis 在接口自動(dòng)化中的應(yīng)用

(1) 封裝Redis操作方法Rf428資訊網(wǎng)——每日最新資訊28at.com

為了方便接口自動(dòng)化測(cè)試框架使用,又要開(kāi)始封裝了,簡(jiǎn)單封裝代碼如下:Rf428資訊網(wǎng)——每日最新資訊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)

接口自動(dòng)化中比較常用的是字符串了,為了滿(mǎn)足更多場(chǎng)景的需求,我們價(jià)格哈希數(shù)據(jù)結(jié)構(gòu)的封裝操作方法。Rf428資訊網(wǎng)——每日最新資訊28at.com

接口自動(dòng)化測(cè)試中的常見(jiàn)應(yīng)用場(chǎng)景

(1) 測(cè)試數(shù)據(jù)管理Rf428資訊網(wǎng)——每日最新資訊28at.com

接口自動(dòng)化測(cè)試中,將測(cè)試數(shù)據(jù)存儲(chǔ)在Redis中,如用戶(hù)信息、配置參數(shù)等。通過(guò)使用封裝的Redis操作方法,可以方便地進(jìn)行數(shù)據(jù)的增、刪、改、查。Rf428資訊網(wǎng)——每日最新資訊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) 處理接口依賴(lài)數(shù)據(jù)Rf428資訊網(wǎng)——每日最新資訊28at.com

一般步驟如下:Rf428資訊網(wǎng)——每日最新資訊28at.com

  • 先明確接口的依賴(lài)關(guān)系: 誰(shuí)調(diào)用誰(shuí)之前要先調(diào)用誰(shuí)或者誰(shuí)
  • 設(shè)置數(shù)據(jù)到redis:也就是接口B執(zhí)行成功后,將關(guān)鍵數(shù)據(jù)存redis,可以使用我們封裝的set,健一般是一個(gè)標(biāo)識(shí)符,值就是接口的返回值
  • 從redis獲取數(shù)據(jù):比如接口A執(zhí)行前,先獲取B數(shù)據(jù)存Redis,然后調(diào)用redis獲取數(shù)據(jù)給A或者B、C 等等。

上代碼:Rf428資訊網(wǎng)——每日最新資訊28at.com

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

(3) 緩存管理Rf428資訊網(wǎng)——每日最新資訊28at.com

遇到需要頻繁訪(fǎng)問(wèn)的接口,怎么半?Rf428資訊網(wǎng)——每日最新資訊28at.com

為了減少接口調(diào)用的開(kāi)銷(xiāo)和提高測(cè)試效率,可以使用Redis作為緩存工具,將接口的響應(yīng)結(jié)果緩存起來(lái),以便后續(xù)的測(cè)試用例重復(fù)使用。Rf428資訊網(wǎng)——每日最新資訊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:        # 調(diào)用接口獲取用戶(hù)信息        user_info = api.get_user_info(user_id)        redis_client.set_data(cache_key, user_info, expire_time=3600)    return user_info

咱們首先檢查Redis緩存中是否已存在對(duì)應(yīng)的用戶(hù)信息,如果不存在,則調(diào)用接口獲取用戶(hù)信息并將其存儲(chǔ)到Redis緩存中,以備后續(xù)使用。同時(shí),通過(guò)設(shè)置expire_time參數(shù),可以為緩存數(shù)據(jù)設(shè)置過(guò)期時(shí)間,避免過(guò)期數(shù)據(jù)的使用。Rf428資訊網(wǎng)——每日最新資訊28at.com

(4) 并發(fā)測(cè)試Rf428資訊網(wǎng)——每日最新資訊28at.com

在自動(dòng)化測(cè)試中,針對(duì)并發(fā)場(chǎng)景的測(cè)試很重要,我們可以并發(fā)模擬一些實(shí)際場(chǎng)景,比如:利用redis的原子性和分布式鎖,為每個(gè)用戶(hù)創(chuàng)建一個(gè)唯一的標(biāo)識(shí),存到redis中,這樣不同用戶(hù)請(qǐng)求就可以通過(guò)檢查和比對(duì)redis的結(jié)果來(lái)模擬并發(fā)訪(fǎng)問(wèn)了,例如:Rf428資訊網(wǎng)——每日最新資訊28at.com

# 創(chuàng)建 Redis 客戶(hù)端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:        # 調(diào)用接口獲取用戶(hù)信息        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# 并發(fā)測(cè)試函數(shù)def run_concurrent_test(user_ids):    with concurrent.futures.ThreadPoolExecutor() as executor:        # 提交任務(wù)到線(xiàn)程池        future_to_user_id = {executor.submit(get_user_info, user_id): user_id for user_id in user_ids}        # 處理返回結(jié)果        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)

我們創(chuàng)建線(xiàn)程池,使用submit 將任務(wù)(get_user_info)提交到線(xiàn)程池,每個(gè)任務(wù)一個(gè) user_id,這里簡(jiǎn)單打印每個(gè)用戶(hù)id,對(duì)于的信息,通過(guò)并發(fā)執(zhí)行多任務(wù),可以同一時(shí)間內(nèi)獲取多個(gè)用戶(hù)信息,提高測(cè)試效率。Rf428資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-10470-0.html拋磚引玉:Redis 與 接口自動(dòng)化測(cè)試框架的結(jié)合

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

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

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

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
  • K60 Pro官方停產(chǎn) 第三方瞬間漲價(jià)

    雖然沒(méi)有官方宣布,但Redmi的一些高管也已經(jīng)透露了,Redmi K60 Pro已經(jīng)停產(chǎn)且不會(huì)補(bǔ)貨,這一切都是為了即將到來(lái)的K60 Ultra鋪路,屬于廠(chǎng)家的正常操作。但有意思的是該機(jī)在停產(chǎn)之后
  • 破圈是B站頭上的緊箍咒

    來(lái)源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之每年的暑期檔都少不了瞄準(zhǔn)追劇女孩們的古偶劇集,2021年有優(yōu)酷的《山河令》,2022年有愛(ài)奇藝的《蒼蘭訣》,今年卻輪到小破站抓住了追
  • 品牌洞察丨服務(wù)本地,美團(tuán)直播成效幾何?

    來(lái)源:17PR7月11日,美團(tuán)App首頁(yè)推薦位出現(xiàn)“美團(tuán)直播”的固定入口。在直播聚合頁(yè)面,外賣(mài)“神槍手”直播間、美團(tuán)旅行直播間、美團(tuán)買(mǎi)菜直播間等均已上線(xiàn),同時(shí)
  • 東方甄選單飛:有些鳥(niǎo)注定是關(guān)不住的

    文/彭寬鴻編輯/羅卿東方甄選創(chuàng)始人俞敏洪帶隊(duì)的“7天甘肅行”直播活動(dòng)已在近日順利收官。成立后一年多時(shí)間里,東方甄選要脫離抖音自立門(mén)戶(hù)的傳聞不絕于耳,“7
  • 阿里大調(diào)整

    來(lái)源:產(chǎn)品劉有媒體報(bào)道稱(chēng),近期淘寶天貓集團(tuán)啟動(dòng)了近年來(lái)最大的人力制度改革,涉及員工績(jī)效、層級(jí)體系等多個(gè)核心事項(xiàng),目前已形成一個(gè)初步的“征求意見(jiàn)版”:1、取消P序列
  • 三星折疊屏手機(jī)去年銷(xiāo)售近1000萬(wàn)臺(tái) 今年目標(biāo)定為1500萬(wàn)

    7月29日消息,三星率先發(fā)力可折疊手機(jī)市場(chǎng),在全球市場(chǎng)已經(jīng)取得了非常亮眼的成績(jī),接下來(lái)會(huì)進(jìn)一步鞏固和擴(kuò)大這一優(yōu)勢(shì)。三星在推出Galaxy Z Flip5和Galax
  • 三星顯示已開(kāi)始為AR設(shè)備研發(fā)硅基LED微顯示屏

    7月18日消息,據(jù)外媒報(bào)道,隨著蘋(píng)果首款頭顯產(chǎn)品Vision Pro在6月份正式推出,AR/VR/MR等頭顯產(chǎn)品也就將成為各大公司下一個(gè)重要的競(jìng)爭(zhēng)領(lǐng)域,對(duì)顯示屏這一關(guān)
  • Android 14發(fā)布:首批適配機(jī)型公布

    5月11日消息,谷歌在今天凌晨舉行了I/O大會(huì),本次發(fā)布會(huì)谷歌帶來(lái)了自家的AI語(yǔ)言模型PaLM 2、谷歌Pixel Fold折疊屏、谷歌Pixel 7a手機(jī),同時(shí)發(fā)布了Androi
  • OPPO K11搭載長(zhǎng)壽版100W超級(jí)閃充:26分鐘充滿(mǎn)100%

    據(jù)此前官方宣布,OPPO將于7月25日也就是今天下午14:30舉辦新品發(fā)布會(huì),屆時(shí)全新的OPPO K11將正式與大家見(jiàn)面,將主打旗艦影像,和同檔位競(jìng)品相比,其最大的賣(mài)
Top