Python微信订餐小程序课程视频
https://edu.csdn.net/course/detail/36074
Python实战量化交易理财系统
https://edu.csdn.net/course/detail/35475
在HttpRunner3的示例代码中,发送HTTP请求的代码是这样写的:
from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase
class TestCaseBasic(HttpRunner):
config = Config("basic test with httpbin").base_url("https://httpbin.org/")
teststeps = [
Step(
RunRequest("headers")
.get("/headers")
.validate()
.assert_equal("status\_code", 200)
.assert_equal("body.headers.Host", "httpbin.org")
),
# 省略
Step(
RunRequest("post data")
.post("/post")
.with_headers(**{"Content-Type": "application/json"})
.with_data("abc")
.validate()
.assert_equal("status\_code", 200)
),
# 省略
]
if __name__ == "\_\_main\_\_":
TestCaseBasic().test_start()
- 类TestCaseBasic继承了类HttpRunner。
- 在类TestCaseBasic的内部定义了teststeps列表,由多个Step类的实例对象组成。
- 类Step初始化传入类RunRequest的方法get和post就把HTTP请求发出去了。
这到底是怎么实现的?
先看下RunRequest的源码:
class RunRequest(object):
def \_\_init\_\_(self, name: Text):
self.__step_context = TStep(name=name)
def with\_variables(self, **variables) -> "RunRequest":
self.__step_context.variables.update(variables)
return self
def setup\_hook(self, hook: Text, assign\_var\_name: Text = None) -> "RunRequest":
if assign_var_name:
self.__step_context.setup_hooks.append({assign_var_name: hook})
else:
self.__step_context.setup_hooks.append(hook)
return self
def get(self, url: Text) -> RequestWithOptionalArgs:
self.__step_context.request = TRequest(method=MethodEnum.GET, url=url)
return RequestWithOptionalArgs(self.__step_context)
def post(self, url: Text) -> RequestWithOptionalArgs:
self.__step_context.request = TRequest(method=MethodEnum.POST, url=url)
return RequestWithOptionalArgs(self.__step_context)
def put(self, url: Text) -> RequestWithOptionalArgs:
self.__step_context.request = TRequest(method=MethodEnum.PUT, url=url)
return RequestWithOptionalArgs(self.__step_context)
def head(self, url: Text) -> RequestWithOptionalArgs:
self.__step_context.request = TRequest(method=MethodEnum.HEAD, url=url)
return RequestWithOptionalArgs(sel