回顾

上期编写了用例详情页,这期我们快刀斩乱麻,来编写用例执行功能

编写执行用例的方法

由于之前我们已经编写过了HTTP请求的方法,所以这次我们写起来事半功倍,只需要套个壳儿就可以了!

  • 编写app/utils/executor.py
  1. import json
  2. from app.dao.test_case.TestCaseDao import TestCaseDao
  3. from app.middleware.HttpClient import Request
  4. from app.utils.logger import Log
  5. class Executor(object):
  6. log = Log("executor")
  7. @staticmethod
  8. def run(case_id: int):
  9. result = dict()
  10. try:
  11. case_info, err = TestCaseDao.query_test_case(case_id)
  12. if err:
  13. return result, err
  14. # 说明取到了用例数据
  15. if case_info.request_header != "":
  16. headers = json.loads(case_info.request_header)
  17. else:
  18. headers = dict()
  19. if case_info.body != '':
  20. body = case_info.body
  21. else:
  22. body = None
  23. request_obj = Request(case_info.url, headers=headers, data=body)
  24. method = case_info.request_method.upper()
  25. response_info = request_obj.request(method)
  26. return response_info, None
  27. except Exception as e:
  28. Executor.log.error(f"执行用例失败: {str(e)}")
  29. return result, f"执行用例失败: {str(e)}"

注意这里的http请求其实很局限,比如不支持文件上传,不支持cookies等等。但是后续咱们可以慢慢儿来完善。

  • 编写接口

测试平台系列(29) 编写用例执行的方法 - 图1

调用一下Executor类的run方法即可。

编写前端部分

  • 编写调用后端的方法: /request/run

测试平台系列(29) 编写用例执行的方法 - 图2

  • 新增play icon

测试平台系列(29) 编写用例执行的方法 - 图3

这里只console.log输出了执行结果,因为考虑到执行结果报告化,以及后续需要有组织有纪律,还能随时查询到历史报告,所以后面测试报告页面是必不可少的。这边没有落库也没有做任何操作,是因为好东西要留到后头。

测试平台系列(29) 编写用例执行的方法 - 图4

配对视频: 测试平台系列02