httprunner3.x 测试用例config(name/base_url /variables/verify/export)
【属性介绍】
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之间参数的传递。还是以上面的官方代码为例:
- 在config中配置export“foo3”这个变量。
- 在第一个Step中,.extract() 提取了"body.args.foo2"给变量“foo3”。
- 在第二个Step中,引用变量"foo3"。