httprunner(6)配置資訊config

Silent丿丶黑羽發表於2021-02-07

前言

每個測試用例都應該有config部分,可以配置用例級別。比如name、base_url、variables、verify、export等等
 

案例演示

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("https://postman-echo.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(必填)

指定用例名稱,將在log和報告中展示,下面指定用例名稱為testcase baidu案例
用cat命令檢視日誌中用例的名稱

(httprunner_env) ➜  logs cat f39480a1-e4c4-42a0-b301-b2777408cf0c.run.log 
2021-02-07 10:05:53.142 | INFO     | httprunner.runner:test_start:451 - Start to run testcase: testcase baidu案例, TestCase ID: f39480a1-e4c4-42a0-b301-b2777408cf0c
2021-02-07 10:05:53.142 | INFO     | httprunner.runner:__run_step:292 - run step begin: / >>>>>>
2021-02-07 10:05:53.229 | DEBUG    | httprunner.client:request:186 - client IP: 192.168.1.141, Port: 56803
2021-02-07 10:05:53.229 | DEBUG    | httprunner.client:request:194 - server IP: 180.101.49.12, Port: 443


 

base_url(選填)

一般通過的完整url=host地址+path路徑(比如:'https://www.baidu.com/s')
base_url就是通用的host地址,實際使用中,通常被用作切換環境
如果base_url被指定,測試步驟中的url只能寫相對路徑。當你要在不同環境下測試時,這個配置非常有用。
 

案例演示

比如公司目前有2套環境,一套測試環境1地址:192.168.1.100, 一套生成環境2地址:172.111.222.333,兩套環境都要執行某用例,這個時候base_url就起到了作用,來看下面演示

 

variables(選填)

測試用例的公共引數,每個測試步驟都可以引用他,比如我一個測試用例中所有的步驟都需要用到version,那麼version就可以放在config的variables中。
另外,Step裡的變數優先順序是比config裡的變數要高的,如果有2個同名的變數,那麼引用的時候,是優先引用步驟裡的變數。
 

verify(選填)

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

export(選填)

指定輸出的測試用例變數,主要是用於Step之間引數的傳遞
比如最常見的面試題:介面測試,下一個介面依賴上一個介面的返回資料?
答:在httpruner中上一個介面使用export匯出,下一個介面引用該變數即可

相關文章