gpt4 book ai didi

python - 行为测试的模块化结构

转载 作者:行者123 更新时间:2023-12-03 21:30:37 26 4
gpt4 key购买 nike

现在我有以下测试功能目录:

Tests/
--BehaveTest1/
----BehaveTest1.feature
----steps/
------test_steps.py
--BehaveTest2/
----BehaveTest2.feature
----steps/
------test_steps.py

由于 BehaveTest1 和 BehaveTest2 的测试步骤很常见,我想实现一个通用模块,两个测试用例都可以在需要时调用它。目前,我在 Tests/文件夹中创建了一个 common/目录,并通过以下方式导入它(在每个测试功能的 test_steps.py 文件中):
import sys, os
sys.path.append('../common')
import common

但是我不想弄乱路径,所以我想知道是否有更好的方法来使用行为测试功能的结构来做到这一点?

最佳答案

没必要乱搞sys.path ,这不依赖于您使用的 Python 版本。这同样适用于 Python 2.7 或 Python 3.x。

给定以下文件结构:

Tests/
├── BehaveTest1
│   ├── BehaveTest1.feature
│   └── steps
│   └── test_steps.py
├── BehaveTest2
│   ├── BehaveTest2.feature
│   └── steps
│   └── test_steps.py
├── common.py
├── __init__.py

__init__.py的存在|在 Tests目录是关键。 它是一个空文件,但没有它,Python 将无法加载模块,因为 Tests不会被视为一个包。

我可以有 test_steps.py在两个目录中只做:
import Tests.common

Tests/common.py文件包含:
from behave import when, then

@when("foo")
def foo(context):
pass

@then("bar")
def bar(context):
pass
@when@then自动放入 Behave 从 steps/ 加载的文件中子目录,但不是来自您使用 import 加载的任何其他模块.

然后我可以使用调用 common.py 中定义的步骤的虚假功能文件来运行它。 :
$ behave Tests/BehaveTest*
Feature: BehaveTest1 # Tests/BehaveTest1/BehaveTest1.feature:1

Scenario: foo # Tests/BehaveTest1/BehaveTest1.feature:3
When foo # Tests/common.py:3 0.000s
Then bar # Tests/common.py:7 0.000s

Feature: BehaveTest2 # Tests/BehaveTest2/BehaveTest2.feature:1

Scenario: foo # Tests/BehaveTest2/BehaveTest2.feature:3
When foo # Tests/common.py:3 0.000s
Then bar # Tests/common.py:7 0.000s

2 features passed, 0 failed, 0 skipped
2 scenarios passed, 0 failed, 0 skipped
4 steps passed, 0 failed, 0 skipped, 0 undefined
Took 0m0.000s

关于python - 行为测试的模块化结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36613050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com