接口测试

1 离线包安装,如何引用 Python3 第三方依赖包?

注意

Python3 引用第三方依赖包有【挂载本地目录】 和【容器共享目录】两种方式,任选其中一种方式即可。

挂载本地目录

MeterSphere 里内嵌的 Python3 是 Python3.10,因此需要先在部署的环境里,先安装 Python3.10

  1. # 安装python3.10
  2. apt update && sudo apt upgrade -y
  3. apt install software-properties-common -y
  4. add-apt-repository ppa:deadsnakes/ppa
  5. apt install python3.10
  6. # 安装虚拟环境
  7. apt install -y python3.10-venv
  8. # 创建一个目录用于python虚拟环境
  9. mkdir /root/.venv
  10. cd /root/.venv
  11. python3 -m venv .
  12. source bin/activate
  13. # 安装三方包
  14. pip install requests
  15. pip install pinyin

配置 task-runner 的目录挂载 /root/.venv/lib/python3.10/site-packages:/usr/local/lib/python3.10/site-packages

接口测试

配置完成后执行 msctl reload,服务启动后就可以在 Python3 脚本中直接使用三方包了

接口测试 ```

容器共享目录

使用 Dockerfile 制作一个 python 容器

  1. FROM python:3.10-alpine
  2. RUN pip install requests pinyin
  3. VOLUME ["/usr/local/lib/python3.10/site-packages"]

修改 docker-compose-task-runner.yml 文件

  1. version: "3"
  2. services:
  3. python:
  4. container_name: python
  5. image: python:3.10
  6. command: sh -c "tail -f /dev/null" # 保持容器运行
  7. task-runner:
  8. image: ${MS_IMAGE_PREFIX}/metersphere-ce:${MS_IMAGE_TAG}
  9. container_name: task-runner
  10. deploy:
  11. resources:
  12. limits:
  13. memory: ${MS_RUNNER_MEM_LIMIT}
  14. entrypoint:
  15. - sh
  16. - -c
  17. - |
  18. sh /shells/task-runner.sh
  19. environment:
  20. TOTP_ENABLED: ${MS_TOTP_ENABLED}
  21. TOTP_SECRET: ${MS_TOTP_SECRET}
  22. ports:
  23. - ${MS_TASK_RUNNER_PORT}:8000
  24. healthcheck:
  25. test: [ "CMD", "nc", "-zv", "localhost", "8000" ]
  26. interval: 6s
  27. timeout: 5s
  28. retries: 50
  29. volumes:
  30. - ${MS_BASE}/metersphere/logs/task-runner:/opt/metersphere/logs/task-runner
  31. volumes_from:
  32. - python
  33. restart: always
  34. networks:
  35. - ms-network

2 在线一键安装,如何引用 Python3 第三方依赖包?

宿主机的 Python3 环境已安装 requests 模块,执行 pip show requests 找到 Python3 环境的路径

接口测试

  • 通过 docker run 命令一键安装 MeterSphere,需要添加 -v 参数,将宿主机 Python3 环境映射到容器内部
  • 执行命令【docker run -d -p 8081:8081 —name=metersphere -v ~/.metersphere/data:/opt/metersphere/data -v /usr/local/python3/lib/python3.10/site-packages:/usr/local/python3/lib/python3.10/site-packages cr2.fit2cloud.com/metersphere/metersphere-ce-allinone】

接口测试

在【项目管理-公共脚本】处添加如下代码,进行测试,在执行结果页面,正常输出请求成功响应体。

接口测试

接口测试

3 本地执行检测,出现 “网络异常,请检查您的网络连接是否正常”

配置 localhost 异常

【个人执行-本地执行】配置 http://localhost:8000,页面报“网络异常,请检查您的网络连接是否正常”

接口测试

在 Chrome 浏览器上访问【chrome://flags/#block-insecure-private-network-requests】将该项设置为【disabled】,重启浏览器即可

接口测试

若是 Edge 浏览器,则输入【edge://flags】后,搜索【block-insecure-private-network-requests】将其设置【disabled】

接口测试

点击【检测并保存】即可检测通过

接口测试

配置本地IP异常

【本地执行】配置 http://本地IP:8000 则会出现如下的跨域问题。

接口测试

在 Chrome 浏览器上访问【chrome://settings/】后,点击【隐私和安全-网站设置-更多内容设置-不安全内容-允许显示不安全内容-添加】

接口测试

接口测试

添加 MeterSphere 平台域名后,点击小三角后,在”不安全内容”处设置”允许”

接口测试

接口测试

若是 Edge 浏览器,则输入【edge://settings】后,搜索【不安全内容】后,点击不安全内容,添加 MeterSphere 平台域名即可

接口测试

接口测试

点击【检测并保存】即可检测通过

接口测试

4 资源池无法访问当前站点

问题现象

【接口测试】执行请求时,页面提示”资源池无法访问当前站点”

接口测试

解决方法

【系统设置-系统-资源池】编辑页面,工作节点 URL 填写为 MeterSphere 服务地址,该地址与 task-runner 容器服务之间网络要通。

接口测试