Ist es möglich, einem Szenario programmgesteuert Zeilen hinzuzufügen?

Ich möchte zu Beginn eines jeden meiner SpecFlow-Tests die gleiche Zeile einfügen.

Diese Zeile gibt eine Liste mehrerer Szenarien an, die sich im Laufe der Zeit ändern. Daher ist es nicht möglich, diese Liste für jeden Test zu pflegen.

Zum Beispiel:

Given I have set my site theme to <MyTheme>
    |Theme Names|
    |Theme 1    |
    |Theme 2    |
    |Theme 3    |
    |Theme 4    |
    |Theme 5    |

Ich möchte diesen Test für jedes der Themen wiederholen lassen. Die Liste der Themen ist nicht in Stein gemeißelt und sollte an einem einzigen Ort aufbewahrt werden.

Bisher habe ich es erfolgreich geschafft, eineGenerator Plugin, und ich hatte vor, dieses Plugin zu verwenden, um die SpecFlow-Funktion unmittelbar vor dem Generieren der Testklasse zu ändern. In diesem Kontext kann ich jedoch keine Möglichkeit zum Bearbeiten des Szenarios finden.

Ist es möglich, den Szenariotext aus einer Implementierung von abzurufen und festzulegen?IUnitTestGeneratorProvider?

Ich bin nicht bereit, diese Methode zu verwenden. Wenn also jemand einen besseren Weg vorschlagen kann, würde ich das auch akzeptieren.

Entschuldigung, wenn ich eine falsche Terminologie habe - ich habe gerade erst mit der Verwendung von SpecFlow begonnen.

Bearbeiten:

Ich füge diesen Abschnitt hinzu, um zu verdeutlichen, wonach ich eigentlich strebe.

Angenommen, ich hatte eine Testsuite mit 800 Tests. Wir haben die Geschäftsanforderung, jeden dieser 800 Tests für jedes unserer verfügbaren Themen durchzuführen. Die Liste der verfügbaren Themen kann jederzeit geändert werden, und es ist nicht möglich, diese Liste an mehr als einem Ort zu verwalten.

Also zum Beispiel, wenn ich die folgenden zwei Tests hatte:

Beispiel A:

    Given I set context to < site >
    Given I go to base url
    When I type <username> in username field
    When I type <password> in password field
    When I click login button
    Examples:
        | site         | username  | password   |
        | MySuperSite  | chris     | mypassword |
        | MySuperSite2 | chris2    | mypassword |



    Given I am logged in
    Given I go to base url
    When I click logout button
    Then I am logged out

Ich könnte diese Tests einfach manuell ändern, um Folgendes zu erreichen:

Beispiel B:

    Given I am using the < theme > theme
    Given I set context to < site >
    Given I go to base url
    When I type <username> in username field
    When I type <password> in password field
    When I click login button
    Examples:
        | site         | username  | password   | theme  |
        | MySuperSite  | chris     | mypassword | theme1 |
        | MySuperSite2 | chris2    | mypassword | theme1 |
        | MySuperSite  | chris     | mypassword | theme2 |
        | MySuperSite2 | chris2    | mypassword | theme2 |
        | MySuperSite  | chris     | mypassword | theme3 |
        | MySuperSite2 | chris2    | mypassword | theme3 |



    Given I am using the < theme > theme
    Given I am logged in
    Given I go to base url
    When I click logout button
    Then I am logged out
    Examples:
        | theme  |
        | theme1 |
        | theme2 |
        | theme3 |

Es gibt ein paar Probleme damit:

Die Tests werden mit Daten aufgebläht, die wiederholt werdenWenn wir uns nicht mehr für eine Unterstützung entscheidentheme2 dann muss jemand jeden Test durchgehen und ihn aus der Beispieltabelle entfernen (im obigen Beispiel nicht schlecht, aber im Bild hatten wir> 800 Tests)Bei Tests mit Beispieltabellen wird die Tabellengröße mit der Anzahl der von uns unterstützten Themen multipliziert (> 40).Es besteht ein hohes Risiko, dass ein manueller Fehler dadurch verursacht wird, dass jemand versehentlich vergisst, einem Test ein bestimmtes Thema hinzuzufügen

Zielsetzung: Ich möchte, dass unsere Tester Tests im Stil von schreibenExample A, aber lassen Sie die Tests selbst so kompilieren, wie sie wären, wenn sie im Stil von geschrieben wärenExample B.

Ich habe ein Generator-Plugin für den Specflow erstellt, um die Testerstellung abzufangen und die Zeile dann programmgesteuert hinzuzufügenGiven I am using the < theme > themeAktualisieren Sie die Beispieldaten nach Bedarf, oder fügen Sie sie hinzu. Allerdings kann ich das anscheinend nicht von hier aus tun.

Kann mir jemand sagen, ob dies möglich ist, und wenn ja, wie soll ich vorgehen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage