首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当测试文件夹包含__init__.py时,在pytest中找不到模块错误

基础概念

__init__.py 文件是 Python 包的标志文件,表示该目录应该被视为一个包。当你在目录中添加 __init__.py 文件时,Python 会将该目录视为一个包,并且可以导入其中的模块。

相关优势

  1. 组织代码__init__.py 文件帮助你将代码组织成包,使得代码结构更清晰,便于管理和维护。
  2. 模块导入:通过 __init__.py 文件,你可以控制包的导入行为,例如在导入包时自动执行某些初始化操作。

类型

__init__.py 文件可以是空文件,也可以包含 Python 代码。常见的用途包括:

  1. 定义包级别的变量和函数:你可以在 __init__.py 文件中定义包级别的变量和函数,这些变量和函数在导入包时可以直接使用。
  2. 控制导入行为:你可以在 __init__.py 文件中使用 __all__ 变量来控制 from package import * 语句的行为。

应用场景

假设你有一个项目结构如下:

代码语言:txt
复制
my_project/
    __init__.py
    module1.py
    module2.py
tests/
    __init__.py
    test_module1.py

在这种情况下,my_projecttests 目录都被视为包。

常见问题及解决方法

问题:当测试文件夹包含 __init__.py 时,在 pytest 中找不到模块错误

原因

  1. 路径问题:pytest 可能无法正确识别包含 __init__.py 文件的目录作为包。
  2. 配置问题:pytest 的配置文件(如 pytest.ini)可能需要调整。

解决方法

  1. 确保路径正确: 确保你的测试文件路径正确,并且 pytest 能够找到这些文件。你可以在 conftest.py 文件中添加路径配置:
  2. 确保路径正确: 确保你的测试文件路径正确,并且 pytest 能够找到这些文件。你可以在 conftest.py 文件中添加路径配置:
  3. 调整 pytest 配置: 在项目根目录下创建或编辑 pytest.ini 文件,添加以下内容:
  4. 调整 pytest 配置: 在项目根目录下创建或编辑 pytest.ini 文件,添加以下内容:
  5. 示例代码
  6. 假设你有以下目录结构:
  7. 假设你有以下目录结构:
  8. module1.py 内容:
  9. module1.py 内容:
  10. test_module1.py 内容:
  11. test_module1.py 内容:
  12. 在项目根目录下创建 pytest.ini 文件:
  13. 在项目根目录下创建 pytest.ini 文件:
  14. 运行 pytest:
  15. 运行 pytest:

参考链接

相关搜索:在包含__init__.py的文件夹中运行pytest失败在pytest中当会话fixture失败时如何忽略测试为什么在将__init__.py添加到pytest的测试文件夹后,可以在调试器中导入模块由于找不到模块错误,无法在python中运行测试在IntelliJ IDEA中运行Gradle测试时,“找不到给定包含的测试”当flask在lib文件夹中时,GCP找不到flask。Koa -错误,找不到文件-当html和css在不同的文件夹中时当URL在WordPress中包含年份作为参数时找不到页面找不到模块:在react中编译时无法解析‘./Navbar’错误当元素明确存在时,在python中找不到元素错误启动测试时找不到模块'fs-extra‘错误,尽管该模块存在于cypress中找不到模块:错误:在angular应用程序中解析时出现递归NestJS测试错误:在E2E测试模块中找不到已编译的js文件在Amps中触发更新时,MarkLogic出现“找不到触发器模块”错误如何修复一个“找不到模块”的错误,在Cabal中,当它似乎正确指定?当尝试在react原生应用程序上运行jest时,测试会失败。找不到"setupDevtools“错误当测试的一部分被模块化到不同的函数中时,Nodejs测试给出错误当symlink存在于该路径上时,在docker映像中找不到命令错误Aurelia:错误:在与Webpack的Karma测试中找不到ID为aurelia-pal-browser的模块当尝试在Python线性模型的PanelOLS函数中包含固定效果时,如何修复吸收效果错误?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

pytest封神之路第七步 用例查找原理

执行pytest命令pytest会从project查找test来执行。本文先从几个路径相关的概念讲起,这样便于理解pytest遍历路径的走向。...如果用python -m pytest,以模块的方式来执行,会把cwd也加入sys.path。 例如,a目录下执行pytest,cwd是a,basedir是y,sys.path包含y。...如果执行python -m pytest,sys.path包含y也包含a y |--a | |--b_test.py | |--__init__.py // 表明a是package pytest...查找原理 第一种情况 pytest命令是可以加参数的,如果加了文件夹/文件参数,那么就只参数指定的文件夹/文件查找,可以指定多个。...例如 pytest a_dir b_dir c_test.py d_test.py 特殊的,如果a_dir包含了c_test.py,那么会收集成2次,pytest也会执行2次。

91020

pytest文档2-用例运行规则

用例有三种方法,以下三种方法都可以,一般推荐第一个 pytest py.test python -m pytest 如果不带参数,某个文件夹下执行时,它会查找该文件夹下所有的符合条件的用例(查看用例设计原则...-k 按关键字匹配 pytest -k “MyClass and not method” 这将运行包含与给定字符串表达式匹配的名称的测试,其中包括Python 使用文件名,类名和函数名作为变量的运算符。...运行.py模块里面的某个函数 pytest test_mod.py::test_func 运行.py模块里面,测试类里面的某个方法 pytest test_mod.py::TestClass::test_method...-x 遇到错误时停止测试 pytest -x test_class.py 从运行结果可以看出,本来有3个用例,第二个用例失败后就没继续往下执行了 D:\YOYO>pytest -x test_class.py...—maxfail=1 当用例错误个数达到指定数量,停止测试 D:\YOYO>pytest --maxfail=1 ============================= test session

1.1K30
  • #抬抬小手学Python# Python Poetry 进行依赖管理【图文】

    那时您可能会转向外部的打包模块您的 Python 代码依赖于外部模块,您可以说这些包是您项目的依赖项。 您可以PyPI 中找到不属于Python 标准库的包。...注意: 有些用户 Windows 10 上使用 PowerShell 命令时会报告错误输出,您应该看到安装完成的消息。...在这个目录,你会找到一个__init__.py包含你的包版本的文件: \# rp\_poetry/\_\_init\_\_.py \_\_version\_\_ = "0.1.0" 您跳到tests...另一个是pytest,一个广泛使用的测试框架。正如您之前看到的,您的项目包含一个tests/文件夹和一个test_rp_poetry.py文件。...使用pytest作为依赖项,Poetry 可以安装后立即运行您的测试。 注意:在编写本教程pytest使用Python 3.10运行Poetry不起作用。

    1.6K40

    《带你装B,带你飞》pytest成神之路2- 执行用例规则和pycharm运行的三种姿态

    pytest py.test python -m pytest   如果不带参数,某个文件夹下执行时,它会查找该文件夹下所有的符合条件的用例(查看用例设计原则) 6....-k 按关键字匹配 pytest -k “MyClass and not method” 这将运行包含与给定字符串表达式匹配的名称的测试,其中包括Python使用文件名,类名和函数名作为变量的运算符。...7.pytest -x( 遇到错误时停止测试) pytest -x test_class.py 从运行结果可以看出,本来有3个用例,第二个用例失败后就没继续往下执行了 ?...8.pytest -maxfail=num(当用例错误个数达到指定数量,停止测试) pytest --maxfail=1 ?...所以很有必要学习如何在pycharm里面运行pytest用例 8.1xx.py脚本方式直接执行 1.以xx.py脚本方式直接执行,写的代码里面没用到unittest和pytest框架,并且脚本名称不是以

    1.3K30

    如何在VS Code运行 Pytest

    我们将使用一个基本的 Python 模块(简单的计算器)来演示 VS Code 测试过程。 让我们开始吧。...目标 本篇文章结束,您应该能够: VS Code 设置和配置 Pytest VS Code 自动发现测试 使用 VS Code Pytest 执行测试 为什么 VS Code 中使用...注意 - 请注意,为了使自动发现正常工作,您需要在测试文件夹中有一个 __init__.py 文件,以及 VS Code 工作区打开一个单独的存储库文件夹(因为如果您在包含多个存储库的目录,VS...手动测试发现(如果自动发现失败) 测试发现是一项自动功能,它会检测您的测试,或者未检测到测试通知您。 启用 Python 项目的 Pytest 后,它会自动启动。...或者,如果您的测试文件或代码缺少文件或存在错误,您将看到如下所示的错误消息: 如果在测试发现期间遇到任何错误,请确保您的测试文件位于正确的目录,并且您的测试代码没有错误

    32510

    Pytest系列(16)- 分布式测试插件之pytest-xdist的详细使用

    1000分钟才能跑完 项目非常紧急,会需要协调多个测试资源来把任务分成两部分,于是执行时间缩短一半,如果有10个小伙伴,那么执行时间就会变成十分之一,大大节省了测试时间 为了节省项目测试时间,10个测试同时并行测试...--looponfail:子进程重复运行测试。 每次运行之后,pytest都会等到项目中的文件更改后再运行之前失败的测试。 重复此过程,直到所有测试通过,然后再次执行完整运行。...下的方法来分组,然后将每个测试组发给可以执行的worker,确保同一个组的测试用例同一个进程执行 目前无法自定义分组,按类class分组优先于按模块module分组 --dist=loadfile...按照同一个文件名来分组,然后将每个测试组发给可以执行的worker,确保同一个组的测试用例同一个进程执行 如何让scope=session的fixturetest session仅仅执行一次...pytest-xdist是让每个worker进程执行属于自己的测试用例集下的所有测试用例 这意味着不同进程,不同的测试用例可能会调用同一个scope范围级别较高(例如session)的fixture

    2.5K21

    新手如何发布第一个Python项目开源包?这里有一份详细指南

    通常情况下,项目库的根目录包含一个以项目名称命名的文件夹,项目的核心代码应该位于此文件夹。在这个文件夹之外是运行和构建包(测试、文档等)所需的其他代码。...核心文件夹应包括一个(或多个)模块和一个 __init__.py 文件,该文件包含你希望让终端用户访问的类/函数。此文件还可以包含包的版本,以便于终端用户访问。...所有测试都应该放在一个专用的文件夹(例如名为 tests/或 testing 的文件夹)。在这个文件夹中放置你需要的所有测试文件,以便尽可能多地包含你的核心代码。下面是一个如何编写单元测试的示例。...这里还有一个 SciTime 的测试文件。 一旦就位,你就可以通过项目库的根目录运行 python -m pytest 本地进行测试。 创建测试后,你还应该能估算覆盖率。...完成后,加上以下几点会更好: Pull 请求和 issue 模板:创建新的 Pull 请求或 issue ,这些文件可以根据你的需求给你的描述提供模板。

    1.3K30

    详细指南 | 如何在Github发布Python开源包

    通常情况下,项目库的根目录包含一个以项目名称命名的文件夹,项目的核心代码应该位于此文件夹。在这个文件夹之外是运行和构建包(测试、文档等)所需的其他代码。...核心文件夹应包括一个(或多个)模块和一个 __init__.py 文件,该文件包含你希望让终端用户访问的类/函数。此文件还可以包含包的版本,以便于终端用户访问。...所有测试都应该放在一个专用的文件夹(例如名为 tests/或 testing 的文件夹)。在这个文件夹中放置你需要的所有测试文件,以便尽可能多地包含你的核心代码。下面是一个如何编写单元测试的示例。...这里还有一个 SciTime 的测试文件。 一旦就位,你就可以通过项目库的根目录运行 python -m pytest 本地进行测试。 创建测试后,你还应该能估算覆盖率。...完成后,加上以下几点会更好: Pull 请求和 issue 模板:创建新的 Pull 请求或 issue ,这些文件可以根据你的需求给你的描述提供模板。

    1.8K20

    新手如何发布第一个Python项目开源包?这里有一份详细指南

    通常情况下,项目库的根目录包含一个以项目名称命名的文件夹,项目的核心代码应该位于此文件夹。在这个文件夹之外是运行和构建包(测试、文档等)所需的其他代码。...核心文件夹应包括一个(或多个)模块和一个 __init__.py 文件,该文件包含你希望让终端用户访问的类/函数。此文件还可以包含包的版本,以便于终端用户访问。...所有测试都应该放在一个专用的文件夹(例如名为 tests/或 testing 的文件夹)。在这个文件夹中放置你需要的所有测试文件,以便尽可能多地包含你的核心代码。下面是一个如何编写单元测试的示例。...这里还有一个 SciTime 的测试文件。 一旦就位,你就可以通过项目库的根目录运行 python -m pytest 本地进行测试。 创建测试后,你还应该能估算覆盖率。...完成后,加上以下几点会更好: Pull 请求和 issue 模板:创建新的 Pull 请求或 issue ,这些文件可以根据你的需求给你的描述提供模板。

    80820

    【轻量级NoSQL数据库与PythonWeb-Flask框架组合使用】4-项目布局及应用配置

    然而,项目越来越大的时候,把所有代码放在单个文件中就有点不堪重负了。 Python 项目使用 包 来管理代码,把代码分为不同的模块,然后需要的地方导入 模块。本教程也会按这一方式管理代码。...教程项目包含如下内容: flaskr/ ,一个包含应用代码和文件的 Python 包。 tests/ ,一个包含测试模块文件夹。...创建 flaskr 文件夹并且文件夹内添加 __init__.py 文件。 __init__.py 有两个作用:一是包含应用工厂;二是 告诉 Python flaskr 文件夹应当视作为一个包。...例如,正式部署的时候,用于设置一个正式的 SECRET_KEY 。 test_config 也会被传递给工厂,并且会替代实例配置。这样可以实现 测试和开发的配置分离,相互独立。...终端告诉 Flask 你的应用在哪里, 然后开发模式下运行应用。请记住,现在还是应当在最顶层的``flask-tutorial`` 目录下,不是 flaskr 包里面。

    46120

    Pytest系列(18)- 超美测试报告插件之allure-pytest的基础使用

    pypi.douban.com 快速入门 这是运行代码的包结构 # 是项目文件夹名称 15allure │ conftest.py │ test_1.py │ __init__.py │...,只需添加 --alluredir 选项,并提供指向应存储结果的文件夹的路径 pytest -n auto --alluredir=allure 生成出来的结果 可以看到,这不是我们想要的结果,一堆json...要在测试完成后查看实际报告,需要使用Allure命令行来让测试结果生成报告 allure serve allure 然后就会自动默认浏览器显示生成的报告 ?...查看suites(函数级别的测试用例) 从包名-模块名-测试用例 ? 查看suites(类级别的测试用例) 从包名-模块名-类名-测试用例 ?...查看测试用例详情 parameters:如果用了 ,右侧的parameters是可以看到传了什么参数和对应的值 @pytest.mark.parametrize set up:调用fixture的前置操作

    1.3K10

    Python 架构模式:附录 A 到 E

    目前,此模块内的结构完全是平面的,但对于更复杂的项目,您可以期望增加一个包含domain_model/、infrastructure/、*services/和api/*的文件夹层次结构。...④ 测试位于它们自己的文件夹。子文件夹区分不同的测试类型,并允许您分别运行它们。我们可以测试文件夹中保留共享的固定装置(conftest.py),并在需要嵌套更具体的固定装置。...测试文件夹没有src文件夹或setup.py,因为我们通常不需要使测试可通过 pip 安装,但如果您在导入路径方面遇到困难,您可能会发现它有所帮助。...提示 您收到无效的消息,通常除了记录错误并继续之外,你几乎无能为力。 MADE,我们使用指标来计算系统接收的消息数量,以及其中有多少成功处理、跳过或无效。...否则,我们会让自己遭受恼人的并发错误。 其次,我们应该尽量避免将所有业务逻辑都放入这些前提条件检查。作为一个经验法则,如果一个规则可以我们的领域模型内进行测试,那么它应该在领域模型中进行测试

    18510

    Python各个模块的介绍和使用

    3.测试模块 实际开一个开发人员编写完一个模块后,为了让模块能够项目中达到想要的效果,这个开发人员会自行在py文件添加一些测试信息,例如: ?...使用from文件夹import模块 的方式导入 ? msg文件夹下创建__init__.py文件 ? __init__.py文件写入 ?...4、__all__ __init__.py文件,定义一个__all__变量,它控制着from包名import *导入的模块。...5、(了解)可以__init__.py文件编写内容 可以在这个文件编写语句,导入时,这些语句就会被执行。 __init__.py文件 ? ?...所以我们__init__.py中加入__all__变量。该变量包含执行这样的语句应该导入的模块的名字。它由一个模块名字符串列表组成。 ? ? 总结: ?

    1.5K80

    Pytest和Allure测试框架-超详细版+实战

    pytest和allure测试应用 自动执行 1, 单元测试测试报告展示 2, conftest编写driver,范围session,使用 addfinalizer测试结束后关闭浏览器 3, 前端自动化测试...autouse遵循scope=”关键字参数”规则:scope=”session”,无论怎样定义只运行一次;scope=”module”,每个py文件只运行一次;scope=”class”,每个...class只运行一次(但是一个文件包括function和class,会在每个function(不在class)运行一次);scope=”function”,每个function运行一次; ‘...100%]test01 2, 执行用例遇到错误停止 • 正常全部执行完成后才能停止,如果想遇到错误时停止测试: -x;也可以当用例错误个数n达到指定数量,停止测试:- – maxfail=n...pytest和allure测试应用 自动执行 1, 单元测试测试报告展示 2, conftest编写driver,范围session,使用 addfinalizer测试结束后关闭浏览器 3,

    2K40

    AutoTest-Pytest环境安装配置

    今天因为测试任务新的环境又脑补了一下基于Python的Pytest环境配置与安装,加以分享,希望对大家有所帮助 前置:python安装已经安装 1.安装pytest pip install -U pytest...2.检查pytest安装的版本 pip show pytest 3.基于pycharm设置pytest运行环境 create_project | File>>Setting>>Tools>>Python...integrated Tools >> Default test runner >> 下拉选择pytest 注意:创建项目pycharm对应的运行环境需要选择正确,不然出现在pip安装的模块都无法正常使用...环境试运行 ** 运行之前需要给大家介绍下pytest框架文件的设计规则,这是pytest的游戏规则请遵守,否则在执行期间pytest找不到不按规则命名的脚本 文件名需以 test_*.py 文件和*_...test.py 函数以 test_开头 类以 Test 开头 方法以 test_开头 所有的包 pakege 必项要有__init__.py 文件 以百度检索知乎为Demo进行演示 # coding

    50920

    pytest文档57-单元测试代码覆盖率(pytest-cov)

    \\.coverage': Safety level may not be changed inside a transaction 解决办法:安装3.6.1以上版本 实现功能 在做单元测试,代码覆盖率常常被拿来作为衡量测试好坏的指标...用例设计 tests/test_pay.py下写测试用例,先只写一个支付成功的案例 from src.pay import pay_status # 作者-上海悠悠 QQ交流群:717225969 #...31%,其它文件都是100%覆盖,这就说明我们单元测试代码测试覆盖率是31% 还有一个指标是测试用例的执行率,测试用例test_pay.py文件,执行率是100%,说明用例全部执行了。...生成html的报告 pytest —cov —cov-report=html 执行完成,项目根目录会生成 htmlcov 目录 ? 运行 index.html 文件查看代码覆盖率 ?...想覆盖率达到100%,那得再继续写用例,让每个if分支情况都覆盖到 指定被测代码 如果我们想指定执行项目里面的某个模块,可以通过—cov=模块 来运行 pytest —cov=src >pytest -

    4.6K21

    Python模块介绍和使用1.import2.from…import3.from … import *4.as5.定位模块6.模块制作7.模块的__all__8.python的包9.

    3.测试模块 实际开一个开发人员编写完一个模块后,为了让模块能够项目中达到想要的效果,这个开发人员会自行在py文件添加一些测试信息,例如: ?...使用from文件夹import模块 的方式导入 ? msg文件夹下创建__init__.py文件 ? __init__.py文件写入 ?...4__all__ __init__.py文件,定义一个__all__变量,它控制着from包名import *导入的模块 5....(了解)可以__init__.py文件编写内容 可以在这个文件编写语句,导入时,这些语句就会被执行 __init__.py文件 ? ?...所以我们__init__.py中加入__all__变量。该变量包含执行这样的语句应该导入的模块的名字。它由一个模块名字符串列表组成。 ? ? 总结: ? ?

    98510

    Flask 学习-16.项目设计与蓝图的使用

    if __name__ == '__main__': app.run() 然而,项目越来越大的时候,Python 项目使用包(package)来管理代码,把代码分为不同的模块,然后需要的地方导入模块...: apps/    项目的applications, 一个项目下可以有多个app templates/ 项目模板 static/  静态资源文件 tests/ 一个包含测试模块文件夹。.../ .coverage htmlcov/ dist/ build/ *.egg-info/ 初始化app apps目录 __init__.py 有两个作用:一是包含应用工厂;二是 告诉 Python...开发过程, 为了方便可以设置为 ‘dev’ ,但是发布的时候应当使用一个随机值来 重载它。 DATABASE SQLite 数据库文件存放在路径。...与把视图及其他 代码直接注册到应用的方式不同,蓝图方式是把它们注册到蓝图,然后工厂函数 把蓝图注册到应用。

    66810

    Pytest系列(1) - 快速入门和基础讲解

    为什么要用Pytest pytest 的官方网站介绍,它具有如下特点: 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考 能够支持简单的单元测试和复杂的功能测试 支持参数化 执行测试过程可以将某些测试跳过...pakege 必项要有__init__.py 文件 Pytest执行用例规则 注意,下面讲的都是cmd执行pytest命令 1、某个目录下所有的用例 pytest 2、执行某一个 py 文件下用例...模块里面,测试类里面的某个方法 pytest start.py::TestClass::test_two 5、-m 标记表达式(后续讲解) pytest -m login 将运行用 @pytest.mark.login...装饰器修饰的所有测试,后面再展开讲标记哦 6、-q 简单打印,只打印测试用例的执行结果 pytest -q start.py 7、-s 详细打印 pytest -s start.py 8、-x 遇到错误时停止测试...pytest start.py -x 9、—maxfail=num,当用例错误个数达到指定数量,停止测试 pytest start.py --maxfail=1 10、-k 匹配用例名称 执行测试用例名称包含

    71120
    领券