小编jaz*_*ipc的帖子

如何使用GitLab CI设置Selenium E2E测试?

我正在为网站前端开发一个Vue.js应用程序.

对于这个应用程序,我想使用单元和E2E测试.我用vue-cli构建了我的项目.

根据我的理解,vue-cli使用Karma进行单元测试,使用Nightwatch + Selenium进行E2E测试.

.gitlab-ci.yml看起来如下:

stages:
  - test

test:express:
  image: node:boron
  stage: test
  script:
    - cd backend/
    - npm install --progress=false
    - ./node_modules/.bin/jasmine

test:vue:
  image: node:boron
  stage: test
  script:
    - cd frontend/
    - npm install --progress=false
    - npm test
Run Code Online (Sandbox Code Playgroud)

npm test运行e2e和单元测试,并在本地计算机上运行.单元测试运行平稳,Selenium启动Chrome窗口并使用E2E测试.

问题是不知道如何在GitLab CI上运行E2E Selenium测试.它一直给我一个错误说:

Could not connect to Selenium Server. Have you started the Selenium Server yet?虽然它之前说过它已经创建了一个Selenium服务器.

如何在GitLab CI上运行E2E Selenium测试?如果无法实现,我可以在GitLab CI上运行哪种E2E?

selenium unit-testing docker gitlab-ci e2e-testing

6
推荐指数
1
解决办法
3411
查看次数

如何捆绑外部 CMake 依赖项来生成 Python 包?

我正在尝试为OpenVSlam项目生成 Python 绑定。

我正在使用 PyBind11 并遵循cmake_example模板。

我在我的开发环境中成功构建了该.so文件pybind11_add_module,其中安装了所有依赖项(例如 OpenCV、Protobuf 等库)。该.so文件在此开发环境中运行良好。我可以正确运行import sys; sys.path.append('.'); import openvslam_python;和使用绑定函数。但是,我想将该.so文件作为 Python 包发送。

问题是,当我运行python3 setup.py sdist bdist_wheel并尝试wheel在另一个环境(没有安装的依赖项)上安装结果时,它说找不到依赖项的.so文件。例如,它输出以下错误(在 Docker 容器中):

>>> import sys
>>> sys.path.append('.')
>>> import openvslam_python
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: libopenvslam.so: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种方法将 PyBind11 绑定的依赖项与 CMake(或者可能在脚本内setup.py)捆绑在一起,以便能够在没有安装任何依赖项的环境中安装它们。这样,我可以使用简单的pip install …

python cmake python-bindings pybind11

6
推荐指数
0
解决办法
315
查看次数

如何使用 Python OpenCV 获取图像中的淹没区域及其边界?

我有一张像这样的图像,它只是黑白的:

迷宫的图像

我只想使用 获取带有边框的cv2.floodfill图像的被淹没区域,如下所示(请原谅我的绘画技巧):

在此输入图像描述

这是我当前的代码:

    # Copy the image.
    im_floodfill = cv2.resize(actual_map_image, (500, 500)).copy()

    # Floodfill from point (X, Y)
    cv2.floodFill(im_floodfill, None, (X, Y), (255, 255, 255))

    # Display images.
    cv2.imshow("Floodfilled Image", im_floodfill)
    cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)

我得到的输出等于原始图像。我怎样才能只得到有边界的洪水区域?

编辑:我想从“竞技场”内的任何白点进行洪水填充,例如图像中的红点(X,Y)。我希望只有竞技场内小圆圈的外边界和外墙的内边界。

EDIT2:我已经完成了一半:

# Resize for test purposes 
    actual_map_image = cv2.resize(actual_map_image, (1000, 1000))
    actual_map_image = cv2.cvtColor(actual_map_image, cv2.COLOR_BGR2GRAY)

    h, w = actual_map_image.shape[:2]
    flood_mask = np.zeros((h+2, w+2), dtype=np.uint8)
    connectivity = 8
    flood_fill_flags = (connectivity | cv2.FLOODFILL_FIXED_RANGE | cv2.FLOODFILL_MASK_ONLY | 255 << 8) …
Run Code Online (Sandbox Code Playgroud)

python opencv

3
推荐指数
1
解决办法
3415
查看次数