1. 程式人生 > 實用技巧 >httprunner 3.x--引數化parameters(引數和值一對多,多對多等)

httprunner 3.x--引數化parameters(引數和值一對多,多對多等)

上一篇裡寫的httprunner 3.x--variables變數和宣告(變數和值一一對應)中的variables是對 “一對一”的引數有用,

但對於變數需要多個數值,比如登入賬號需要多個賬號密碼的,總不能一個賬號密碼寫一個測試用例,這時候就需要用到關鍵字parameters

具體使用方法如下:

【yml格式的測試用例】

config:
    name: "hz測試"
    parameters:
      uid: [1**97,1245]
      choujiang_id: [***,33]
      username: [**,mm]
    base_url: 
"https://lottery.hz.z****in.com" verify: False teststeps: - name: "介面test /lotteryTest.php" request: method: GET url: /lotteryTest.php params: uid: $uid choujiang_id: $choujiang_id username: $username validate: - eq : ["status_code
", 200] - eq : ["body.status", 1]

其中打**的引數是正確,username是任意都行,所以上面的引數有8種組合

[1**97,***,**] [1**97,***,mm] [1**97,33,**] [1**97,33,mm]

[1245,***,**] [1234,***,mm] [1245,33,**] [1245,33,mm]

執行結果如下:

【pytest格式測試用例】

# NOTE: Generated By HttpRunner v3.1.3
# FROM: testcases/hetest_re.yml


import pytest
from httprunner import Parameters from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase class TestCaseHetestRe(HttpRunner): @pytest.mark.parametrize( "param", Parameters( {"uid": [1**7, 1245], "choujiang_id": [***, 33], "username": ["**", "mm"]} ), ) def test_start(self, param): super().test_start(param) config = ( Config("hz測試").base_url("https://lottery.hz.z*****in.com").verify(False) ) teststeps = [ Step( RunRequest("介面test /lotteryTest.php") .get("/lotteryTest.php") .with_params( **{ "uid": "$uid", "choujiang_id": "$choujiang_id", "username": "$username", } ) .validate() .assert_equal("status_code", 200) .assert_equal("body.status", 1) ), ] if __name__ == "__main__": TestCaseHetestRe().test_start()

然後用pytest方法執行

執行結果如下: