上一篇中,我們了解到了config,在配置中,我們可以配置測試用例級級別的一些設置,比如基礎url、驗證、變量、導出。
我們一起來看,官方給出的一個例子:
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(必填)
即用例名稱,這是一個必填參數。測試用例名稱,將顯示在執行日志和測試報告中。比如,我在之前的百度搜索的case里,加入name。
運行后,在debug日志里,可以看的用例名稱被展示出來。
二、base_url(選填)
其實這個配置一般在多環境切換中最常用。
比如你的這套測試用例在qa環境,uat環境都要使用,那么就可以把基礎地址(舉例http://demo.qa.com),設置進去。在后面的teststep中,只需要填上接口的相對路徑就好了(舉例 /get)。
這樣的話,切換環境運行,只需要修改base_url即可。
三、variables(選填)
變量,這里可以存放一些公共的變量,可以在測試用例里引用。這里大家可以記住這個“公共”的詞眼,因為在后面的Step中,還會有步驟變量。
比如說,我的接口有個傳參是不變的,比如用戶名username,而且后面的沒個Step都會用到這個傳參,那么username就可以放在config的公共變量里。
另外,Step里的變量優先級是比config里的變量要高的,如果有2個同名的變量的話,那么引用的時候,是優先引用步驟里的變量的。
四、verify(選填)
用來決定是否驗證服務器TLS證書的開關。
通常設置為False,當請求https請求時,就會跳過驗證。如果你運行時候發現拋錯SSLError,可以檢查一下是不是verify沒傳,或者設置了True。
五、export(選填)
導出的變量,主要是用於Step之間參數的傳遞。還是以上面的官方代碼為例:
- 在config中配置export“foo3”這個變量。
- 在第一個Step中,.extract() 提取了"body.args.foo2"給變量“foo3”。
- 在第二個Step中,引用變量"foo3"。
像參數傳遞,提取這些點,會放在后面單獨講解,前面還是以熟悉框架為主。