【问题标题】:Codeception Gherkin, defining the step implementation pathCodeception Gherkin,定义步骤实现路径
【发布时间】:2018-04-05 16:12:34
【问题描述】:

我是 php 和 codeception 的新手,我想将 Gherkin 与 Codeception 一起使用,并且我已经设置了让功能文件在 Codeception 中运行的最低要求。我现在发现自己正在尝试制作一个可扩展的结构并利用 PageObject 框架。我创建了一个 Steps 文件夹,我希望我的步骤实现保存在该文件夹中。默认情况下,运行codecept run some.feature 会加载acceptance.suite.yml 文件中定义的类。

动机:我希望能够将我的步骤实现保存到它自己的单独文件夹中

鉴于我有一个 accept.suite.yml 文件配置:

gherkin:
    contexts:
        default: 
            - AcceptanceTester
modules:
    enabled:
        - WebDriver:
            url: https://www.google.com/
            browser: chrome
        - \Helper\Acceptance

并且我有一个codeception.yml 文件配置:

paths:
    tests: tests
    output: tests/_output
    data: tests/_data
    support: tests/_support
    envs: tests/_envs
actor_suffix: Tester
extensions:
    enabled:
        - Codeception\Extension\RunFailed

而且我的 Steps 文件夹位于 _support 下:

如何更改配置以允许我的步骤实现 从 Steps 文件夹调用?

【问题讨论】:

标签: php phpunit bdd codeception behat


【解决方案1】:

在套件配置的gherkin: 部分中,您需要列出在default:role: 和/或tag: 部分下组织的步骤类。官方文档中有配置示例:Gherkin options

以下是最近项目的示例(使用 Codeception 2.5.6):

文件结构

/app/common
├── codeception.yml
├── tests
│   ├── acceptance.suite.yml
│   ├── _bootstrap.php
│   ├── _data
│   │   └── user.php
│   ├── _support
│   │   ├── AcceptanceTester.php
│   │   ├── Step
│   │   │   └── Acceptance
│   │   │       └── CuratorSteps.php

上面的步骤类布局是使用codeceptgenerate:stepobject命令生成步骤对象时的默认布局,如下所示:

$ /app/vendor/bin/codecept -c /app/common generate:stepobject acceptance CuratorSteps

acceptance.suite.yml:

# acceptance.suite.yml
namespace: common\tests
suite_namespace: common\tests\acceptance
bootstrap: false
actor: AcceptanceTester
modules:
    enabled:
        - PhpBrowser:
            url: http://example.com/
gherkin:
    contexts:
        default:
            - common\tests\AcceptanceTester
        role:
            curator:
                - common\tests\Step\Acceptance\CuratorSteps

文档没有提到它,但我注意到我必须列出步骤类的完整命名空间,否则我会得到 "Step definition for ... not found in contexts"运行测试时出错,gherkin:steps codecept 命令不会返回步骤定义。

输出

$ /app/vendor/bin/codecept -vvv -c /app/common gherkin:steps acceptance
Steps from role:curator context:
+--------------------------------------------------------------------+------------------------------------------------------------------------------------------+
| Step                                                               | Implementation                                                                           |
+--------------------------------------------------------------------+------------------------------------------------------------------------------------------+
| I sign in as an admin                                              | common\tests\Step\Acceptance\CuratorSteps::iSignInAsAnAdmin                              |
| I should see a :arg1 button                                        | common\tests\Step\Acceptance\CuratorSteps::iShouldSeeAButton                             |
+--------------------------------------------------------------------+------------------------------------------------------------------------------------------+
Steps from default context:
+-------------------------------------+---------------------------------------------------------+
| Step                                | Implementation                                          |
+-------------------------------------+---------------------------------------------------------+
| I take a screenshot with name :arg1 | common\tests\AcceptanceTester::itakeAScreenshotWithName |
+-------------------------------------+---------------------------------------------------------+

【讨论】:

    猜你喜欢
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多