1 # NOTE: Generated By HttpRunner v3.1.6
2 # FROM: testcases\demo_testcase_request.yml
3
4
5 from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase
6
7
8 class TestCaseDemoTestcaseRequest(HttpRunner):
9 # 用例配置:全局变量,可以在其中进行测试用例级别的设置(将每个测试用例视为一个黑盒,配置variables是输入部分,而配置export是输出部分)
10 config = (
11 Config("接口测试用例的名称")
12 # 变量:局部变量大于全局变量(步骤里面配置的变量比此处配置的变量具有更高的优先级)
13 .variables(
14 **{
15 "foo1": "config_bar1",
16 "foo2": "config_bar2",
17 "expect_foo1": "config_bar1",
18 "expect_foo2": "config_bar2",
19 }
20 )
21 # base_url:全局变量,如果此处设置了,则测试用例步骤里只能是相对路径,不能写全
22 .base_url("https://postman-echo.com")
23 # 是否验证服务器的TLS证书,除非你想测试用例执行的HTTP流量,默认是false
24 .verify(False)
25 # 关联接口之间,变量的提取(当一个测试用例在另一个测试用例的步骤中被引用,并且将被提取一些会话变量以在随后的测试步骤中使用时,则所提取的会话变量应在config export部分中进行配置)
26 .export(*["foo3"])
27 # 性能的并发数
28 .locust_weight(2)
29 )
30 # 测试用例的步骤:每一个步骤对应于一个API请求或者对另一个测试用例引用调用
31 teststeps = [
32 Step(
33 # 在一个步骤中使用“ RunRequest”来向API发出请求,并对响应进行一些提取或验证
34 RunRequest("该测试用例下步骤1的名字")
35 # 该请求的变量:每个步骤的变量都是独立的,因此,如果要在多个步骤中共享变量,则应在配置变量中定义变量;此外,步骤变量将覆盖配置变量中具有相同名称的变量
36 .with_variables(
37 **{"foo1": "bar11", "foo2": "bar21", "sum_v": "${sum_two(1, 2)}"}
38 )
39 # 请求的url,指相对路径
40 .get("/get")
41 # 请求的参数:Params参数
42 .with_params(**{"foo1": "$foo1", "foo2": "$foo2", "sum_v": "$sum_v"})
43 # 请求的Headers信息
44 .with_headers(**{"User-Agent": "HttpRunner/${get_httprunner_version()}"})
45 # 请求的cookies
46 .with_cookies("xx")
47 # 请求HTTP的正文,data参数
48 .with_data("xxx")
49 # 在json中指定HTTP请求正文
50 .with_json("xxx")
51 # 提取JSON响应主体
52 .extract()
53 .with_jmespath("body.args.foo2", "foo3")
54
55 # 页面加载后对表单进行验证
56 .validate()
57 # 判断响应码是不是200
58 .assert_equal("status_code", 200)
59 # 判断字段foo1的值是不是bar11
60 .assert_equal("body.args.foo1", "bar11")
61 .assert_equal("body.args.sum_v", "3")
62 .assert_equal("body.args.foo2", "bar21")
63 ),
64 Step(
65 RunRequest("该测试用例下步骤2的名字")
66 .with_variables(**{"foo1": "bar12", "foo3": "bar32"})
67 .post("/post")
68 .with_headers(
69 **{
70 "User-Agent": "HttpRunner/${get_httprunner_version()}",
71 "Content-Type": "text/plain",
72 }
73 )
74 .with_data(
75 "This is expected to be sent back as part of response body: $foo1-$foo2-$foo3."
76 )
77 .validate()
78 .assert_equal("status_code", 200)
79 .assert_equal(
80 "body.data",
81 "This is expected to be sent back as part of response body: bar12-$expect_foo2-bar32.",
82 )
83 ),
84 Step(
85 RunRequest("该测试用例下步骤3的名字")
86 .with_variables(**{"foo2": "bar23"})
87 .post("/post")
88 .with_headers(
89 **{
90 "User-Agent": "HttpRunner/${get_httprunner_version()}",
91 "Content-Type": "application/x-www-form-urlencoded",
92 }
93 )
94 .with_data("foo1=$foo1&foo2=$foo2&foo3=$foo3")
95 .validate()
96 .assert_equal("status_code", 200)
97 .assert_equal("body.form.foo1", "$expect_foo1")
98 .assert_equal("body.form.foo2", "bar23")
99 .assert_equal("body.form.foo3", "bar21")
100 ),
101 ]
102
103
104 if __name__ == "__main__":
105 TestCaseDemoTestcaseRequest().test_start()