pytest參數(shù)關(guān)聯(lián)

參數(shù)關(guān)聯(lián)拓提,也叫接口關(guān)聯(lián)愿棋,即接口之間存在參數(shù)的聯(lián)系或依賴纯命。在完成某一功能業(yè)務(wù)時(shí)免胃,有時(shí)需要按順序請(qǐng)求多個(gè)接口,此時(shí)在某些接口之間可能會(huì)存在關(guān)聯(lián)關(guān)系辣恋。

比如:請(qǐng)求登錄接口后獲取到token值第煮,后續(xù)其他接口請(qǐng)求時(shí)需要將token作為請(qǐng)求參數(shù)傳入。

http://123.57.39.153:5005

登錄:
URL:http://test.bylemon.cn/auth
請(qǐng)求方式:post
請(qǐng)求頭:Content-Type:application/json
請(qǐng)求體:
{"email": "Admin123@xx.com",
"pass": "Admin123"}
響應(yīng):
{'code': 201, 'message': '登陸成功抑党!', 'data': {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3MTE3MDc3OTQsInVzZXJfZW1haWwiOiJBZG1pbjEyM0B4eC5jb20iLCJyZWZyZXNoIjpmYWxzZX0.MSSsyRnpRBPNkWjEw_HWaNNknA4vuQW0yl30m7GsYaY', 'refresh_token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3MTE4NzMzOTQsInVzZXJfZW1haWwiOiJBZG1pbjEyM0B4eC5jb20iLCJyZWZyZXNoIjp0cnVlfQ.tRIFFAr1Z56cympOgiWHyON_EfeoeHMp-2rg4diSZc0'}}


獲取信息:
URL:http://test.bylemon.cn/get/data?type=category
請(qǐng)求方式:GET
請(qǐng)求頭:Authorization:Bearer +token

登錄請(qǐng)求后有一個(gè)token值,在后面請(qǐng)求中需要使用token的值

使用pytest在進(jìn)行關(guān)聯(lián)該如何處理呢撵摆?如果按照以下處理直接存儲(chǔ)到self中是否可以呢底靠?

import requests


class TestDemo():
    def test_login(self):
        res = requests.post(url="http://test.bylemon.cn/auth",json={"email": "Admin123@xx.com","pass": "Admin123"})
        self.token = res.json().get("data").get("token")
        print(res.json())

    def test_get_info(self):
        res = requests.get(url="http://test.bylemon.cn/get/data?type=category",headers={"Authorization":"Bearer "+self.token})
        print(res.json())

結(jié)果:


image.png

以上可見是不可以直接使用的。那么我們?cè)撊绾翁幚砟兀?/p>

處理方式一:

將獲取登錄的請(qǐng)求方式定義一個(gè)方法特铝,之后再setup中調(diào)用使用暑中。

import requests


def login():
    res = requests.post(url="http://test.bylemon.cn/auth", json={"email": "Admin123@xx.com", "pass": "Admin123"})
    token = res.json().get("data").get("token")
    return token


class TestDemo():
    def setup_method(self):
        self.token = login()

    def test_get_info(self):
        res = requests.get(url="http://test.bylemon.cn/get/data?type=category",headers={"Authorization":"Bearer "+self.token})
        print(res.json())

處理方式二:

代碼流水式調(diào)用

import requests


class TestDemo():
    def test_get_info(self):
        res = requests.post(url="http://test.bylemon.cn/auth", json={"email": "Admin123@xx.com", "pass": "Admin123"})
        # 獲取token
        token = res.json().get("data").get("token")
        # 在請(qǐng)求中使用
        res = requests.get(url="http://test.bylemon.cn/get/data?type=category",headers={"Authorization":"Bearer "+token})
        print(res.json())

處理方式三:

將請(qǐng)求數(shù)據(jù)存儲(chǔ)到環(huán)境變量中壹瘟。

config文件

token = None

代碼:

import requests
import config


class TestDemo():
    def test01_token(self):
        res = requests.post(url="http://test.bylemon.cn/auth", json={"email": "Admin123@xx.com", "pass": "Admin123"})
        token = res.json().get("data").get("token")
        print(config.token)
        config.token = token

    # 當(dāng)前用例參數(shù)為fixture裝飾修飾的方法名
    def test02_get_info(self):
        # 在請(qǐng)求中使用
        print(config.token)
        res = requests.get(url="http://test.bylemon.cn/get/data?type=category",headers={"Authorization":"Bearer "+config.token})
        print(res.json())

處理方式四:

使用Fixture函數(shù)

import requests
import pytest


class TestDemo():
    @pytest.fixture()
    def test_login(self):
        res = requests.post(url="http://test.bylemon.cn/auth", json={"email": "Admin123@xx.com", "pass": "Admin123"})
        # 使用yield
        token = res.json().get("data").get("token")
        yield token

    # 當(dāng)前用例參數(shù)為fixture裝飾修飾的方法名
    def test_get_info(self,test_login):
        # 在請(qǐng)求中使用
        res = requests.get(url="http://test.bylemon.cn/get/data?type=category",headers={"Authorization":"Bearer "+test_login})
        print(res.json())

這里被fixture修飾的裝飾器函數(shù)不會(huì)被作為測(cè)試函數(shù)執(zhí)行

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市鳄逾,隨后出現(xiàn)的幾起案子稻轨,更是在濱河造成了極大的恐慌,老刑警劉巖雕凹,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件殴俱,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡枚抵,警方通過查閱死者的電腦和手機(jī)线欲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來汽摹,“玉大人李丰,你說我怎么就攤上這事”破” “怎么了趴泌?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)拉庶。 經(jīng)常有香客問我嗜憔,道長(zhǎng),這世上最難降的妖魔是什么砍的? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任痹筛,我火速辦了婚禮,結(jié)果婚禮上廓鞠,老公的妹妹穿的比我還像新娘帚稠。我一直安慰自己,他們只是感情好床佳,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布滋早。 她就那樣靜靜地躺著,像睡著了一般砌们。 火紅的嫁衣襯著肌膚如雪杆麸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天浪感,我揣著相機(jī)與錄音昔头,去河邊找鬼。 笑死影兽,一個(gè)胖子當(dāng)著我的面吹牛揭斧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播峻堰,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼讹开,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼盅视!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起旦万,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤闹击,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后成艘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赏半,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年狰腌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了除破。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡琼腔,死狀恐怖瑰枫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丹莲,我是刑警寧澤光坝,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站甥材,受9級(jí)特大地震影響盯另,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜洲赵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一鸳惯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧叠萍,春花似錦芝发、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至腹殿,卻和暖如春独悴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锣尉。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工刻炒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人自沧。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓落蝙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子筏勒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容