9

タイトルが示すように、シナリオの概要を説明する前に、特定の構成/環境設定手順を実行したいと考えています。シナリオに対してこれを行う必要があることは知ってBackgroundいますが、Behave はシナリオ アウトラインを複数のシナリオに分割し、シナリオ アウトラインのすべての入力に対してバックグラウンドを実行します。

これは私が望むものではありません。特定の理由により、私が作業しているコードを提供することはできませんが、機能ファイルの例を書きます。

Background: Power up module and connect
Given the module is powered up
And I have a valid USB connection

Scenario Outline: Example
    When I read the arduino
    Then I get some <'output'>

Example: Outputs
| 'output' |
| Hi       |
| No       |
| Yes      |

この場合、動作は電源を入れ直し、各出力HiのUSB 接続をチェックしますNoYesその結果、3 回の電源の入れ直しと 3 回の接続チェックが行われます。

私が望むのは、Behave が 1 回電源を入れ直し、接続を 1 回チェックしてから、3 つのテストすべてを実行することです。

どうすればこれを行うことができますか?

4

3 に答える 3

6

あなたの最善の策は、おそらくbefore_feature環境フックと、a) 機能のタグおよび/または b) 機能名を直接使用することです。

例えば:

一部の機能

@expensive_setup
Feature: some name
  description
  further description

  Background: some requirement of this test
    Given some setup condition that runs before each scenario
      And some other setup action

  Scenario: some scenario
      Given some condition
       When some action is taken
       Then some result is expected.

  Scenario: some other scenario
      Given some other condition
       When some action is taken
       Then some other result is expected.

steps/environment.py

def before_feature(context, feature):
    if 'expensive_setup' in feature.tags:
        context.execute_steps('''
            Given some setup condition that only runs once per feature
              And some other run once setup action
        ''')

別の手順/environment.py

def before_feature(context, feature):
    if feature.name == 'some name':
        context.execute_steps('''
            Given some setup condition that only runs once per feature
              And some other run once setup action
        ''')
于 2016-12-02T02:18:37.970 に答える