首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >gitlab-ci.yml:“脚本:-pytest找不到要检查的测试”

gitlab-ci.yml:“脚本:-pytest找不到要检查的测试”
EN

Stack Overflow用户
提问于 2019-10-02 04:14:51
回答 3查看 2.7K关注 0票数 2

我在实现一个在..gitlab ci.yml中运行pytest的玩具示例时遇到了困难

gitlab_ci是一个包含单个文件test_hello.py的回购程序。

代码语言:javascript
运行
复制
gitlab_ci/
    test_hello.py

test_hello.py

代码语言:javascript
运行
复制
# test_hello.py

import pytest

def hello():
    print("hello")

def hello_test():
    assert hello() == 'hello'

.gitlab-ci.yml

代码语言:javascript
运行
复制
# .gitlab-ci.yml

pytest:
  image: python:3.6
  script:
    - apt-get update -q -y
    - pip install pytest
    - pytest # if this is removed, the job outputs 'Success'

CI/CD终端输出

代码语言:javascript
运行
复制
$ pytest
=== test session starts ===
platform linux -- Python 3.6.9, pytest-5.2.0, py-1.8.0, pluggy-0.13.0
rootdir: /builds/kunov/gitlab_ci
collected 0 items

=== no tests ran in 0.02s ===
ERROR: Job failed: exit code 1

我不知道为什么测试不运行..。pytest似乎不认识test_hello.py

溶液

将python文件放入新创建的测试文件夹中:

代码语言:javascript
运行
复制
gitlab_ci/
    .gitlab-ci.yml
    tests/
        test_hello.py

以下列方式修改gitlab-ci.yml

代码语言:javascript
运行
复制
# .gitlab-ci.yml

pytest:
  image: python:3.6
  script:
  - apt-get update -q -y
  - pip install pytest
  - pwd
  - ls -l
  - export PYTHONPATH="$PYTHONPATH:."
  - python -c "import sys;print(sys.path)"
  - pytest

test_hello.py会和以前一样。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-10-02 04:27:25

这个博客帖子提到了一个类似的管道,但是:

但是,由于pytest无法找到“图片”模块(即。要测试的源代码)。 这里遇到的问题是,test_*.py文件无法找到“图片”模块,因为系统路径中没有指定项目的顶级目录:

代码语言:javascript
运行
复制
pytest:
  stage: Test
  script:
  - pwd
  - ls -l
  - export PYTHONPATH="$PYTHONPATH:."
  - python -c "import sys;print(sys.path)"
  - pytest

库诺夫OP确认在评论中

现在起作用了!我将单个文件放入一个新创建的文件夹“test”中

票数 1
EN

Stack Overflow用户

发布于 2022-02-08 16:21:06

PYTHONPATH变量的操作被一些人认为是一种不好的做法(例如,这个关于堆栈溢出的答案或这个水平上编码站)。虽然这在GitLab CI作业的范围内不是一个很大的问题,但是这里有一个基于阿尔贝托·马尔德根在上述博客文章中的评论的解决方案,不需要摆弄PYTHONPATH (也比较干净):

代码语言:javascript
运行
复制
pytest:
  stage: Test
  script:
  - pwd
  - ls -l
  - python -m pytest

为什么要这么做?来自[医]脓性文档

您可以通过命令行通过Python解释器调用测试: python -m pytest ..。 这几乎等同于直接调用命令行脚本pytest [...],但通过python调用也会将当前目录添加到sys.path

票数 2
EN

Stack Overflow用户

发布于 2022-09-11 07:53:13

test_hello.py

def test_hello():#func名称必须以"test_“开头,而不是"hello_test”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58195130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档