Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-在*behave*测试中未找到并行目录中的包_Python_Module_Package_Behavior - Fatal编程技术网

Python-在*behave*测试中未找到并行目录中的包

Python-在*behave*测试中未找到并行目录中的包,python,module,package,behavior,Python,Module,Package,Behavior,我正在尝试用Python完成一个测试 简单的行为测试本身没有问题。但是,当我尝试使用我已经创建的包中的模块时,我就在挣扎,该包位于并行目录中 目录结构类似于: src ├── connection │ │ │ └── api_connector.py │ ├── behave_tests │ │ │ ├─ steps │ │ │ │ │ └ testCommands.py │ │ │ ├── testConnection.

我正在尝试用Python完成一个测试

简单的行为测试本身没有问题。但是,当我尝试使用我已经创建的包中的模块时,我就在挣扎,该包位于并行目录中

目录结构类似于:

src
 ├── connection
 │    │
 │    └── api_connector.py
 │
 ├── behave_tests
 │    │
 │    ├─ steps
 │    │  │
 │    │  └ testCommands.py
 │    │
 │    ├── testConnection.feature
 │    └── testCommands.feature
 │
 └── unit_tests
通常,behave从behave\u tests目录中启动。首先,它运行良好。behave测试的所有Python代码都在testCommands.py文件中,只使用了Python核心的包

但后来我更改了testCommands.py,使用了我自己的包连接中的代码,该连接已经过测试并正常工作

在testCommands.py中,我编写了输入行

from connection.api_connector import ApiConnector, SerialApiConnector
但此输入行不是由behave解析的,它输出:

ModuleNotFoundError: No module named 'connection'
我试图通过在test_commands.py的顶部添加以下行,将包连接附加到python模块路径

但这没用


如何告诉behave使用我的连接包?

进一步阅读后,我找到了解决方案

  • 为了让Python将目录连接识别为一个包,我必须将空的
    \uuuu init\uuuu.py
    文件添加到两个目录中:src和connection
  • 为了能够使用绝对导入处理包连接,PYTHONPATH环境变量必须指向src目录
  • 例如,在linux shell中,我通过键入

    export PYTHONPATH=/home/{username}/test_project/src
    

    然后python解释器和behave找到并解析有问题的模块,只要它们是从这个shell中启动的。

    进一步阅读之后,我就能够找到解决方案

  • 为了让Python将目录连接识别为一个包,我必须将空的
    \uuuu init\uuuu.py
    文件添加到两个目录中:src和connection
  • 为了能够使用绝对导入处理包连接,PYTHONPATH环境变量必须指向src目录
  • 例如,在linux shell中,我通过键入

    export PYTHONPATH=/home/{username}/test_project/src
    

    然后,python解释器和behave找到并解析所讨论的模块,只要它们是从这个shell中启动的。

    这里回答了类似的问题:这里回答了类似的问题: