bash 脚本不读取 pytest 文件

bash script doesn't read pytest files

我正在使用 pytest 为我的 django 项目编写一些测试用例。我在根目录中创建了一个 .ini 文件,如下所示:

python_files = 
    tests.py
    test_*.py
    *_tests.py
    *_test.py

norecursedirs =
    devops
    docs
    media
    settings
    common
    templates
    
addopts = 
    --maxfail=9999
    --showlocals
    --color=yes
    --runxfail
    --strict-markers
    --durations=30
    -r a
    ; --reuse-db
    --no-migrations
    --pdbcls=IPython.terminal.debugger:TerminalPdb

并在主目录中创建了一个文件夹 /devops 并在一个名为 backend_tests.sh 的 bash 文件中,例如:

#!/usr/bin/env bash

options+=("--cov")
options+=("--disable-warnings")
echo "launch pytest ${options[@]}"

poetry run pytest "${options[@]}"

if [[ $? == 1 ]]; then exit 1; fi

当我 运行 devops/backend_tests.sh 它显示,收集了 0 个项目 但是当我将 backend_tests.sh 移动到主目录并且 运行 ./backend_tests.sh它显示收集了5个项目(这意味着加载测试用例。

如果没有给pytest参数,它discovers tests从当前路径递归。所以如果你想使用相同的命令,你可以只改变它执行的路径:

pushd <test_path>
poetry run pytest
popd

您也可以给出测试或测试路径 on the command line,所以最短的方法就是:

poetry run pytest <test_path>

(在你的情况下 <test_path> 可能只是 ..