9

私はSpecFlowを初めて使用し、さまざまな役割タイプの認証済みユーザー向けのテスト機能/シナリオをいくつか設定しています。Coypuを使用したブラウザー自動化を介してこれを行っています。

そのため、その役割タイプのユーザーのログインを設定する機能のバックグラウンドステップがあります。

Background:
    Given I am logged in as a ...some role I'm interested in...

機能の各シナリオの後で、ユーザーを再度ログアウトしたいと思います(そうしないと、バックグラウンドでのログイン手順が次のシナリオで機能しません。テストの合間に同じCoypuブラウザーインスタンスを開いたままにします)。

使用できるアノテーションを見つけました[AfterScenario]が、これはすべての機能のすべてのシナリオに適用されるため(私が理解している限り...)、認証されていないユーザーのシナリオに影響します。

[AfterScenario]私は信じている範囲でスコープを設定できますが、[Scope(Feature="Some Feature")]テストしている多数の機能の前後にログイン/ログアウトする必要があると予想しており、これらすべてを一連のマジックストリングで指定することに熱心ではありません。 。

ですから、機能ファイルに入れることができるものがあるかどうか疑問に思っています。これは、背景に相当しますが、その機能の各シナリオの後に実行します。(あるいは、シナリオごとにログイン/ログアウトする方法は、物事を進めるための最良の方法ではないかもしれませんか?)

4

1 に答える 1

13

specflowには「Postground」機能はありませんが、タグフィルタリングを使用して同様の機能を実現できます。

ほとんどのプロジェクトでは、タグを使用して、特定のセットアップ/ティアダウンロジックを持つシナリオをマークしています。次に、BeforeScenario/AfterScenarioフックを使用してロジックを実行します。

[BeforeScenario("authentication")]
public void BeforeAuthenticationScenario()
{
    //...
}    

[AfterScenario("authentication")]
public void AfterAuthenticationScenario()
{
    //...
}

また、個々のシナリオまたは機能全体にタグを付けることができます。

@authentication
Feature: Some feature requires authentication

@authentication
Scenario: Some scenario requires authentication

したがって、コードには「authentication」というマジックストリングが1つだけあり、機能では、タグを使用してカスタムロジックを宣言的に適用できます。

于 2012-06-11T11:28:47.080 に答える