Pytest使用fixture實現(xiàn)token共享的方法
同學們在做pytest接口自動化時,會遇到一個場景就是不同的測試用例需要有一個登錄的前置步驟,登錄完成后會獲取到token,用于之后的代碼中。首先我先演示一個常規(guī)的做法。
首先在conftest定義一個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']
在測試用例方法中引入這個方法,所有用到token,都需要使用login這個方法。
def test_user(login): token = login # 通過login獲取token ...... def test_address(login): token = login # 通過login獲取token ......
通過上面的方法,可以解決接口使用token的需求,不過這么做每次都會先執(zhí)行l(wèi)ogin接口,有沒有一種方法可以只執(zhí)行一次login接口,后面的接口就不調(diào)用login接口了呢。經(jīng)過老武測試,其實是可以做到的。
思路:login接口使用緩存,當有token的時候就使用token,就不調(diào)用login接口了,如果沒有則調(diào)用login接口,再把token緩存起來。
那需要對上面login的方法進行改造,增加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為目錄中一個存放token的文件路徑,自己定義。 with open(login_path, 'wb') as f: pickle.dump(login_info, f) f.close()
上面代碼完成了token的寫入,當沒有token的時候token寫入到文件中。如果有token,我們就不需要執(zhí)行登錄操作,直接使用文件中的token,這個時候代碼需要繼續(xù)改造。方法開始時判斷當前是否存在保存token的文件,如果有則獲取token,不再執(zhí)行登錄的操作。再增加一個讀取文件內(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'] # 增加一個讀取文件的方法 def get_login_info(): with open(login_path, 'rb') as f: data = pickle.load(f) f.close() return data
以上工作已經(jīng)完成了90%,再來個收尾就完美了。每次執(zhí)行用例結束后把存token文件刪除,不然生成了一個token,代碼判斷token文件存在,就不會去調(diào)用登錄接口。token一但過期,用例就會執(zhí)行失敗。
在conftest定義一個方法,每次執(zhí)行用例都清理一下token文件。要注意級別是session級別哦。
@pytest.fixture(scope='session', autouse=True) def clear_login_file(): if os.path.exists(login_path): logger.info("清理token文件") os.remove(login_path)
到此這篇關于Pytest使用fixture實現(xiàn)token共享的文章就介紹到這了,更多相關Pytest使用fixture內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python環(huán)境功能強大的pip-audit安全漏洞掃描工具
這篇文章主要為大家介紹了python環(huán)境中功能強大的pip-audit安全漏洞掃描工具的功能介紹及安裝使用說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-02-02使用Pytorch構建第一個神經(jīng)網(wǎng)絡模型?附案例實戰(zhàn)
這篇文章主要介紹了用Pytorch構建第一個神經(jīng)網(wǎng)絡模型(附案例實戰(zhàn)),本文通過實例代碼給大家講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03基于Python實現(xiàn)船舶的MMSI的獲取(推薦)
工作中遇到一個需求,需要通過網(wǎng)站查詢船舶名稱得到MMSI碼,網(wǎng)站來自船訊網(wǎng)。這篇文章主要介紹了基于Python實現(xiàn)船舶的MMSI的獲取,需要的朋友可以參考下2019-10-10