2015-02-26 13 views
6

Nella domanda this scenario.getName è stato utilizzato il nome dello scenario. Ho bisogno di ottenere il nome oltre ai parametri. Ad esempio se lo scenario è:Come ottenere il nome e i parametri dello scenario? specflow

Scenario Outline: name of scenario 
Given I am on the proper page 
When I apply <filter> with <params> 
And I click filter 
Then the data should be filtered 
Examples: 
| filter | params  | 
| Date  | Today  | 
| Name  | Some Name | 

Voglio ottenere il nomeOfScenario (Data, Oggi).

Anche io sto usando C# non java

UPDATE

So che quando apro casi di test con NUnit mostrano come nameOfScenario(Date,Today). Qualche idea su come funziona Nunit?

+0

Inserisci un po 'di codice, che hai provato? –

+0

ScenarioContext.Current.ScenarioInfo.Title ottiene il titolo. Non so come ottenere i parametri – mosaad

risposta

6

Sei libero di usare TestContext.CurrentContext.Test.Name - sarà sicuramente aiutarvi ad ottenere il nome dello scenario parametrico esatto.

Specflow non conduce con i parametri in fase di esecuzione, è NUnit (o altro framework di test unità).

Per lo meno è possibile esplorare le proprietà TestContext.CurrentContext.Test per ottenere l'elenco dei parametri.

+3

Va notato che questa risposta si riferisce specificamente alla classe NUnit 'TestContext'. La classe 'Microsoft.VisualStudio.TestTools.UnitTesting.TestContext' non ha una definizione per' CurrentContext'. –

5

È possibile ottenere il titolo dello scenario corrente utilizzando ScenarioContext.Current.ScenarioInfo.Title ma non penso che ci sia alcun modo per ottenere i nomi dei parametri.

NUnit ha il nome dei paramaters come Specflow genereates le classi di test di unità con questi nomi in fase di progettazione, non farli da specflow in fase di esecuzione

+0

Quindi qualcosa di semplice come stampare gli attributi di test una volta che è in esecuzione non è possibile? – mosaad

+0

Si potrebbe scrivere un passo 'Given', magari renderlo in background, che prende tutti questi parametri. Un po 'brutto, però. –

0

Non credo ci sia alcun supporto diretto in SpecFlow per farlo. Tuttavia, con un piccolo sforzo, puoi ottenere il risultato desiderato.

Cambia la tua definizione scenario come questo:

Background: 
Given parameters <filter> and <params> 

Scenario Outline: name of scenario 
Given I am on the proper page 
When I apply <filter> with <params> 
And I click filter 
Then the data should be filtered 
Examples: 
| filter | params  | 
| Date  | Today  | 
| Name  | Some Name | 

e attuare la definizione fase che corrisponde alla fase Given parameters etc..

In alternativa, se tutto ciò che vuoi è un modo per distinguere tra gli esempi, cioè non ti interessa che sia "Data" e "Oggi", vuoi solo sapere che era quella linea e non l'altra, potresti aggiungere un'altra colonna ai tuoi esempi:

Scenario Outline: name of scenario 
Given I am on the proper page 
And I am working example number <example number> 
When I apply <filter> with <params> 
And I click filter 
Then the data should be filtered 
Examples: 
| filter | params  | example number | 
| Date  | Today  | 1    | 
| Name  | Some Name | 2    | 
Problemi correlati