1. 程式人生 > 實用技巧 >httprunner3.x 測試用例config

httprunner3.x 測試用例config

【屬性介紹】

config

在這裡進行配置,對當前測試類中的所有用例都有效。

官方demo

from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase


class TestCaseRequestWithFunctions(HttpRunner):
    config = (
        Config("request methods testcase with functions")
        .variables(
            **{
                "foo1": "config_bar1",
                "foo2": "config_bar2",
                "expect_foo1": "config_bar1",
                "expect_foo2": "config_bar2",
            }
        )
        .base_url("http://demo.qa.com")
        .verify(False)
        .export(*["foo3"])
    )

    teststeps = [
        Step(
            RunRequest("get with params")
            .with_variables(
                **{"foo1": "bar11", "foo2": "bar21", "sum_v": "${sum_two(1, 2)}"}
            )
            .get("/get")
            .with_params(**{"foo1": "$foo1", "foo2": "$foo2", "sum_v": "$sum_v"})
            .with_headers(**{"User-Agent": "HttpRunner/${get_httprunner_version()}"})
            .extract()
            .with_jmespath("body.args.foo2", "foo3")
            .validate()
            .assert_equal("status_code", 200)
            .assert_equal("body.args.foo1", "bar11")
            .assert_equal("body.args.sum_v", "3")
            .assert_equal("body.args.foo2", "bar21")
        ),
        Step(
            RunRequest("post form data")
            .with_variables(**{"foo2": "bar23"})
            .post("/post")
            .with_headers(
                **{
                    "User-Agent": "HttpRunner/${get_httprunner_version()}",
                    "Content-Type": "application/x-www-form-urlencoded",
                }
            )
            .with_data("foo1=$foo1&foo2=$foo2&foo3=$foo3")
            .validate()
            .assert_equal("status_code", 200)
            .assert_equal("body.form.foo1", "$expect_foo1")
            .assert_equal("body.form.foo2", "bar23")
            .assert_equal("body.form.foo3", "bar21")
        ),
    ]


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

name (必選)

指定測試用例名稱,在日誌和測試報告中為展示該名稱。

base_url (可選)

指定被測系統的 host 部分,例如https://postman-echo.com。如果指定了 base_url,則 teststep 中的 url 只能設定相對路徑部分。這對於在不同的測試環境中切換非常有用。

variables (可選)

指定測試用例的公共變數。每個測試步驟都可以引用這裡設定的變數,當然在測試步驟中也可以設定步驟級別的變數。如果測試步驟和測試用例同時設定了變數屬性,則以步驟為準。

變數,這裡可以存放一些公共的變數,可以在測試用例裡引用。這裡大家可以記住這個“公共”的詞眼,因為在後面的Step中,還會有步驟變數。

比如說,我的介面有個傳參是不變的,比如使用者名稱username,而且後面的每個Step都會用到這個傳參,那麼username就可以放在config的公共變數裡。
另外,Step裡的變數優先順序是比config裡的變數要高的,如果有2個同名的變數的話,那麼引用的時候,是優先引用步驟裡的變數的。

verify (可選)

指定是否驗證伺服器的 TLS 證書。如果我們想記錄測試案例執行的 HTTP 請求內容,就需要設定。如果沒有設定 verify 屬性或者值不為 True,則會發生 SSLError。

通常設定為False,當請求https請求時,就會跳過驗證。如果你執行時候發現拋錯SSLError,可以檢查一下是不是verify沒傳,或者設定了True。

SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1076)'))

export (可選)

這裡的匯出,主要是為了關聯做準備。

比如一個用例的某些響應欄位需要在其他的用例中使用時,或者在同一個用例中,某個步驟的結果欄位會被另外的結果欄位引用,可以將需要提取的欄位變數放在 config 的 export 部分。

匯出的變數,主要是用於Step之間引數的傳遞。還是以上面的官方程式碼為例:

  1. 在config中配置export“foo3”這個變數。
  2. 在第一個Step中,.extract() 提取了"body.args.foo2"給變數“foo3”。
  3. 在第二個Step中,引用變數"foo3"。