首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当在父项目上运行pytest时,如何忽略git子模块根目录下的conftest.py文件(例如子模块/conftest.py)?

当在父项目上运行pytest时,如何忽略git子模块根目录下的conftest.py文件(例如子模块/conftest.py)?
EN

Stack Overflow用户
提问于 2021-03-26 00:08:40
回答 2查看 722关注 0票数 1

问题

我如何告诉pytest忽略所有测试文件,包括存储库的git子模块中的conftest.py,因为这些测试和文件与父存储库的测试套件无关。

背景

我的项目中有许多git子模块,它们包含自己的测试配置。

当我试图在“父”存储库中使用pytest时,我会得到这个错误,因为pytest正在我的子模块中收集conftest.py文件。

代码语言:javascript
复制
>pytest
=================================================== ERRORS =================================================== 
_______________________________________ ERROR collecting test session ________________________________________ 
Defining 'pytest_plugins' in a non-top-level conftest is no longer supported:
It affects the entire test suite instead of just below the conftest as expected.
  C:\Users\user\git\project\submodule\conftest.py
Please move it to a top level conftest file at the rootdir:
  C:\Users\user\git\project
For more information, visit:
  https://docs.pytest.org/en/latest/deprecations.html#pytest-plugins-in-non-top-level-conftest-files
========================================== short test summary info =========================================== ERROR
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ============================================== 1 error in 0.45s ==============================================

我的“父”git存储库结构如下所示:

代码语言:javascript
复制
./.git
./project1/__main__.py
./project1/__init__.py
./project1/other_stuff/
./test/
./conftest.py
./setup.cfg
./submodule/.git
./submodule/project2/__main__.py
./submodule/project2/__init__.py
./submodule/project2/other_stuff/
./submodule/conftest.py
./submodule/setup.cfg
./submodule/test/

一个(麻烦的)选项可能是只运行pytest与未初始化的子模块。但是,如果我不初始化git子模块,那么我就不能使用这些库运行集成测试。

EN

回答 2

Stack Overflow用户

发布于 2021-08-05 06:18:13

我通过在我的项目根目录下创建一个pytest.ini文件,显式地指定测试路径来解决这个问题:

代码语言:javascript
复制
# pytest.ini
[pytest]
testpaths =
    tests

这样,子模块路径就会被忽略。将哪些文件从子模块中检出听起来就像一个痛苦的tbh。

票数 2
EN

Stack Overflow用户

发布于 2021-03-26 06:15:26

您可以使用setup your submodule with a sparse-checkout rule (使用exclusion rule)来不加载自己的conftest.py

如果子模块中没有该文件,pytest将自动“忽略”该文件。

例如,运行:

代码语言:javascript
复制
> cd ./submodule
> git sparse-checkout init
> git sparse-checkout set /* !conftest.py
> git sparse-checkout list
/*
!conftest.py
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66809270

复制
相关文章

相似问题

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