httprunner 3.x--引數化parameters(引數和值一對多,多對多等)
阿新 • • 發佈:2020-07-25
上一篇裡寫的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 pytestfrom 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方法執行
執行結果如下: