使用 Behave 进行测试 - 找不到模块
Testing with Behave - cannot find modules
我开始用 Behave 编写一些 BDD 测试,但我在尝试在测试中导入我的 util 模块时遇到问题。
这是我当前的文件夹结构:
root/
__init__.py
README
features/
__init__.py
test.feature
environment.py
steps/
__init__.py
steps_test.py
utils/
__init__.py
string_utils.py
user_utils.py
在我的 environment.py 中,我想要一些设置代码 运行 在功能之前:
import steps.utils.user_utils
def before_feature(context, feature):
username = user_utils.create_username()
print(username)
在我的 user_utils.py:
import string_utils
def create_username():
name = string_utils.gen_str(10, 3)
return name
但是当我从项目 root/
文件夹中 运行 behave
时,出现错误:
$ behave
...
File "root/features/steps/utils/user_utils.py", line 1, in <module>
import string_utils
ModuleNotFoundError: No module named 'string_utils'
但是如果我 运行 python user_utils.py
在 utils/
文件夹中,我不会收到任何错误,这表明它确实找到了模块。
如何让我的模块被 Behave 识别?
问题是 Behave 需要一个相当严格的目录结构。也就是说,它不会递归搜索 steps/
文件夹中的文件夹。因此,您需要将 utils/
文件夹的内容向上移动到 steps/
文件夹中,这样就可以正常工作了。
我开始用 Behave 编写一些 BDD 测试,但我在尝试在测试中导入我的 util 模块时遇到问题。
这是我当前的文件夹结构:
root/
__init__.py
README
features/
__init__.py
test.feature
environment.py
steps/
__init__.py
steps_test.py
utils/
__init__.py
string_utils.py
user_utils.py
在我的 environment.py 中,我想要一些设置代码 运行 在功能之前:
import steps.utils.user_utils
def before_feature(context, feature):
username = user_utils.create_username()
print(username)
在我的 user_utils.py:
import string_utils
def create_username():
name = string_utils.gen_str(10, 3)
return name
但是当我从项目 root/
文件夹中 运行 behave
时,出现错误:
$ behave
...
File "root/features/steps/utils/user_utils.py", line 1, in <module>
import string_utils
ModuleNotFoundError: No module named 'string_utils'
但是如果我 运行 python user_utils.py
在 utils/
文件夹中,我不会收到任何错误,这表明它确实找到了模块。
如何让我的模块被 Behave 识别?
问题是 Behave 需要一个相当严格的目录结构。也就是说,它不会递归搜索 steps/
文件夹中的文件夹。因此,您需要将 utils/
文件夹的内容向上移动到 steps/
文件夹中,这样就可以正常工作了。