HttpRunner3.X學(xué)習(xí)筆記(3) -用例文件的config詳解

在用例的config中,我們可以配置測(cè)試用例級(jí)別的一些設(shè)置依啰,比如base_url丐黄、驗(yàn)證、變量孔飒、導(dǎo)出。

from httprunner import HttpRunner, Config, Step, RunRequest
from utils.FakerData import *
from api.dlvopenapi import unified_order, order_query
from utils.SigleData import FakerSingleData

class TestCaseDlvOpenApiSuccess(HttpRunner):
    config = (
        Config("發(fā)放成功的測(cè)試案例")
            .variables(
            **{
                "appId": "200803014515363414",
                "accountName": get_name(),
                "idCard": "420624199109037552",
                "amount": "0.02",
                "signType":"rsa2",
                "version":"1.0",
                "accountNo": "6225380092315252",
                "phone":get_phone(),
                "serviceCompanyId": "10000032",
                "key": "MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAOI4fc5POr0cZmyyGuw"
            }
        )
            .base_url("http://192.168.1.92:11958")
            .verify(False)
            .export( *["reqNo", "outOrderNo"])
    )

    teststeps = [
        Step(
            RunRequest("發(fā)放收單成功").
                setup_hook('${setup_request($request,$key)}')
                .with_variables(
                **{
                    "attach": "附件",
                    "bank": "ICBC1",
                    "batchNo": "20200801",
                    "depositBank": "工商",
                    "extInfo": "API001-商戶004-攻城獅",
                    "foreignNationality": "CN",
                    "memo": "API_AUTO1",
                    "outOrderNo": get_outOrderNo(),
                    "personalIncomeTax": "0",
                    "phone": "$phone",
                    "postId": "10468",
                    "postName": "tester",
                    "serviceFee": "0",
                    "serviceType": "10002",
                    "shouldAmount": "0",
                    "totalFee": "0",
                    "nonce": get_nonce(),
                    "timestamp": get_current_time()}
            )
                .post(unified_order.UnifiedOrderApi.path)
                .with_json(unified_order.UnifiedOrderApi.json)
                .teardown_hook('${polling_assert(state_,30)}')
                .extract()
                .with_jmespath("body.data.reqNo", "reqNo")
                .with_jmespath("body.data.outOrderNo", "outOrderNo")
                .validate()
                .assert_equal("status_code", 200)
                .assert_equal("body.code", "0000")
                .assert_equal("body.msg", "處理成功")
                .assert_equal('${db_filed_states_with_parm(state_)}', 30)
                .assert_equal('${db_filed_states_with_parm(balance_state_)}', 39)
                .assert_equal('${db_filed_states_with_parm(channel_balance_state_)}', 39)


        ),

        Step(
            RunRequest("發(fā)放訂單查詢")
                .setup_hook('${setup_request($request,$key)}')
                .with_variables(**{
                "method": "ayg.salary.payQuery",
                "nonce": get_nonce(),
                "timestamp": get_current_time(),

            })
                .post(order_query.OrderQueryApi.path)
                .with_json(order_query.OrderQueryApi.json)
                .validate()
                .assert_equal("status_code", 200)
                .assert_equal("body.code", "0000")
                .assert_equal("body.data.code", "30")
                .assert_equal("body.data.msg", "支付成功")
        )
    ]


if __name__ == "__main__":
    TestCaseDlvOpenApiSuccess().test_start()

name(必填)

測(cè)試用例的名稱艰争,必填項(xiàng)坏瞄,將顯示在執(zhí)行日志和測(cè)試報(bào)告中。

image.png

base_url(選填)

這個(gè)配置通常在多環(huán)境切換中最常用甩卓。結(jié)合.env文件或者環(huán)境變量實(shí)現(xiàn)多環(huán)境切換

image.png

variables(選填)

全局變量variables(**{})鸠匀,存放一些公共的變量,可以在整個(gè)測(cè)試用例里引用逾柿。與之對(duì)應(yīng)的是Step中的局部(步驟)變量.with_variables(**{})缀棍。

  1. 比如公共變量用戶名username,而且后面的每一個(gè)Step都會(huì)用到這個(gè)參數(shù)机错,那么username就可以放在config的公共變量里爬范。
  2. Step里的變量?jī)?yōu)先級(jí)是比config里的變量要高的,如果有2個(gè)同名的變量的話弱匪,那么引用的時(shí)候青瀑,是優(yōu)先引用步驟里的變量的。
  3. 寫在全局的變量可以通過測(cè)試類對(duì)象.test_start()param參數(shù)傳遞覆蓋,所以如果需要自定義覆蓋參數(shù),則需要把參數(shù)提到全局變量部分斥难。

verify(選填)

用來(lái)決定是否驗(yàn)證服務(wù)器TLS證書的開關(guān)枝嘶。
通常設(shè)置為False,當(dāng)請(qǐng)求https請(qǐng)求時(shí)哑诊,就會(huì)跳過驗(yàn)證群扶。如果你運(yùn)行時(shí)候發(fā)現(xiàn)拋錯(cuò)SSLError,可以檢查一下是不是verify沒傳镀裤,或者設(shè)置了True竞阐。

export(選填)

需要導(dǎo)出的變量,主要是用于不同caseStep之間參數(shù)的傳遞淹禾。還是以上面的代碼為例:

image.png

  1. 在第一個(gè)Step中馁菜,.extract() 提取了"body.data.reqNo"給變量"reqNo",提取了"body.data.outOrderNo"給變量"outOrderNo"
  1. config中配置export(*["reqNo","outOrderNo"])這個(gè)變量铃岔。export中變量名應(yīng)該和第一步驟的變量名一致汪疮。(其實(shí)這邊所有的Step都是RunRequest型的,前面Step中提取的變量無(wú)須export也能被后面的Step引用毁习,這個(gè)export主要是用于此用例還需要被其他的用例引用的情況下(RunTestCase)需要手動(dòng)在該用例下export一下,方便后續(xù)使用)

  2. 在第二個(gè)Step中智嚷,引用變量"reqNo","outOrderNo",需要加$

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纺且,一起剝皮案震驚了整個(gè)濱河市盏道,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌载碌,老刑警劉巖猜嘱,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異嫁艇,居然都是意外死亡朗伶,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門步咪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)论皆,“玉大人,你說我怎么就攤上這事猾漫〉闱纾” “怎么了?”我有些...
    開封第一講書人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵悯周,是天一觀的道長(zhǎng)粒督。 經(jīng)常有香客問我,道長(zhǎng)禽翼,這世上最難降的妖魔是什么坠陈? 我笑而不...
    開封第一講書人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任萨惑,我火速辦了婚禮,結(jié)果婚禮上仇矾,老公的妹妹穿的比我還像新娘庸蔼。我一直安慰自己,他們只是感情好贮匕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開白布姐仅。 她就那樣靜靜地躺著,像睡著了一般刻盐。 火紅的嫁衣襯著肌膚如雪掏膏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評(píng)論 1 299
  • 那天敦锌,我揣著相機(jī)與錄音馒疹,去河邊找鬼。 笑死乙墙,一個(gè)胖子當(dāng)著我的面吹牛颖变,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播听想,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼腥刹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了汉买?” 一聲冷哼從身側(cè)響起衔峰,我...
    開封第一講書人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蛙粘,沒想到半個(gè)月后垫卤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡出牧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年穴肘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片崔列。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖旺遮,靈堂內(nèi)的尸體忽然破棺而出赵讯,到底是詐尸還是另有隱情,我是刑警寧澤耿眉,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布边翼,位于F島的核電站,受9級(jí)特大地震影響鸣剪,放射性物質(zhì)發(fā)生泄漏组底。R本人自食惡果不足惜丈积,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望债鸡。 院中可真熱鬧江滨,春花似錦、人聲如沸厌均。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)棺弊。三九已至晶密,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間模她,已是汗流浹背稻艰。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留侈净,地道東北人尊勿。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像用狱,于是被迫代替她去往敵國(guó)和親运怖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354