【问题标题】:Running only Feature/Steps files with Behave仅使用 Behave 运行功能/步骤文件
【发布时间】:2018-12-11 01:23:32
【问题描述】:

我正在努力弄清楚 Behave 如何与 Python 一起工作。当我这样设置文件时:

.
├── features
│   ├── tests.feature
│   └── steps
│       └── steps.py
└── mycode.py

并从我的代码根目录的命令行运行 Behave,它首先运行 mycode.py,然后是我的功能/步骤。我只想运行我的功能/步骤。我可以通过从 features 文件夹运行 Behave 来做到这一点,但是它找不到 mycode.py 来导入我想要测试的函数(使用“from mycode import myFunction”导入)

如何在不运行实际代码但仍可访问的情况下运行测试?

【问题讨论】:

    标签: python python-3.x python-behave


    【解决方案1】:

    您运行测试的确切命令是什么?我假设您在根目录中运行“$behave”命令,它应该可以工作。

    “rootdirhere$behave”是如何工作的:
    1.默认会查找features目录。 features 是您放置所有功能文件的文件夹。
    您还可以指定另一个文件夹来保存所有功能文件。
    eg:如果你把它们放在 my_feature_dir 中,你需要在behave配置文件(.behaverc,behave.ini)中定义参数paths paths=my_feature_dir /.
    2. 接下来,它会检查 steps 文件夹是否存在于 features 目录中。
    步骤文件夹是您定义所有步骤的地方。在 step file 中,您将调用代码文件中的方法,例如 Page 对象。在您的情况下,mycode.py

    中的步骤文件调用方法

    所以我认为这里没有任何问题。它应该适合你。
    请分享您运行的命令,然后我可以提供更多帮助。

    【讨论】:

    • 我正在对根运行 Behave,实际上只是命令行中的“Behave”。它运行我的程序(它从命令行获取输入,因此它开始要求输入),然后从相应的文件夹运行我的功能和步骤。它确实可以很好地运行我的测试,我只是不希望它也运行我的程序。 Behave 似乎运行了它可以找到的所有 Py 文件
    • 绝对不行。行为不会运行所有 .py 文件。这里发生的事情是因为步骤文件中的导入命令。在步骤文件中,您执行“from my_code import Myfunction”。它将运行该文件中的所有代码。为避免这种情况,请确保 my_code.py 是一个实例类,并且在 Class 之外没有定义任何方法。在 my_code.py 中创建一个类,例如 Account Class,使用“from my_code import Account”,在步骤中调用 Account(context.driver).method_name()。只运行被调用的方法。
    【解决方案2】:

    “mycode.py”文件中的函数应该可以从“steps.py”文件中访问。

    类似的相对导入

    from .steps.py import xyz
    

    应该有效

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多