前言
每個測試用例都應該有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匯出,下一個介面引用該變數即可