回顾
上期编写了用例详情页,这期我们快刀斩乱麻,来编写用例执行功能
。
编写执行用例的方法
由于之前我们已经编写过了HTTP请求
的方法,所以这次我们写起来事半功倍,只需要套个壳儿就可以了!
- 编写app/utils/executor.py
import json from app.dao.test_case.TestCaseDao import TestCaseDao from app.middleware.HttpClient import Request from app.utils.logger import Log class Executor(object): log = Log("executor") @staticmethod def run(case_id: int): result = dict() try: case_info, err = TestCaseDao.query_test_case(case_id) if err: return result, err # 说明取到了用例数据 if case_info.request_header != "": headers = json.loads(case_info.request_header) else: headers = dict() if case_info.body != '': body = case_info.body else: body = None request_obj = Request(case_info.url, headers=headers, data=body) method = case_info.request_method.upper() response_info = request_obj.request(method) return response_info, None except Exception as e: Executor.log.error(f"执行用例失败: {str(e)}") return result, f"执行用例失败: {str(e)}"
注意这里的http请求其实很局限
,比如不支持文件上传
,不支持cookies
等等。但是后续咱们可以慢慢儿来完善。
- 编写接口
image
调用一下Executor类的run方法即可。
编写前端部分
- 编写调用后端的方法: /request/run
image
- 新增play icon
image
这里只console.log输出了执行结果,因为考虑到执行结果报告化,以及后续需要有组织
有纪律
,还能随时查询到历史报告,所以后面测试报告
页面是必不可少的。这边没有落库也没有做任何操作,是因为好东西要留到后头。
image
配对视频:测试平台系列02