2016-05-31 1 views
0

제 질문은 BDD (Specflow)의 모범 사례에 관한 것입니다. 테스트중인 웹 응용 프로그램에서 계약 생성에 대한 기능을 작성해야합니다.Specflow에서 테이블을 사용하는 가장 좋은 방법

계약을 생성하려면 사용자가 By Tab을 전달해야하며 각 탭 사용자는 15 개 이상의 값 (최소 4, 최대 40 값)을 입력해야합니다.

내 제안은입니다 :

public class Tab1{ 
    public string Field1 { get; set; } 
    public string Field2 { get; set; } 
    public string Field3 { get; set; } 
    } 

질문 : 내가있어이 기능에 시도 난 exemple 모델이 있어야합니다 각각의 탭이 케이스에 따라서

Given Go to the screen "Contrats" 
    And Click on the button "New contract" 
    When Enter in Tab1 
    | Field1  | Field2  | Field3 | 
    | -----------| ------------| ----------| 
    And Click on the Next button 
    And Enter in Tab2 
    | Field1   | Field2  | 
    | --------------- | -----------| 
    And Click on the Next button 
    And Enter in Tab3 
    | Field1 | Field2 | Field 3| Field4 | Field5 | Field6 |Field7   | 
    | -------| -------| ------ | -------- | --------- | -------| ----------------| 
    And Click on the Next button 
    And Enter in Tab4 
    | Field1 | Field2 | Field 3| Field4 | Field5 | Field6 |Field7   | Field8| 
    | -------| -------| ------ | -------- | --------- | -------| ----------------| ------| 
    And Click on the Next button 
    And Enter in Tab5 
    | Field1 | Field2 | Field 3| Field4 | Field5 | Field6 
    | -------| -------| ------ | -------- | --------- | -------| 
    And Click on the Next button 
    And Enter in Tab6 
    | Field1  | Field2  | Field3 | 
    | -----------| ------------| ----------| 

    And Click on the Next button 
    And Click on the Next button 
    And Cliquer sur Oui 
    And Enter in Tab7 
    | Field1  | Field2  | 
    | -----------| ------------| 
    And Click on confirm enregistration 
    And Save the contract reference and close the popup 
    And Click on button No 
    Then Redirecting the Summary tab 

필수 입력란 만 입력하십시오. 그러나 다른 기능에서 나는 Tab1에서 예를 들어 37 개의 필드를 입력 할 때가끔 더 많은 필드를 입력해야합니다. 나는이 경우에 할 수있는 일 :과에 대한,

1 내가

2 이 필드의 최대와 하나 개의 모델을 만들기 너무 많은 모델

있을 것이다? : 다른 모델을 만들기 첫 번째 상황에서는 다른 필드에 대해 빈 값을 설정합니다 (Field4 -> Field37). 모델에 대한 속성이 너무 많습니다. TAB1의 각 블록에 대한

3

우리는 같은 클래스를 만듭니다
public Class Tab1{ 

    public Bloc1 Field1 { get; set; } 
    public Bloc2 Field2 { get; set; } 
    public Bloc3 Field3 { get; set; } 


    public class Bloc1{ 
    public string Field1 { get; set; } 
    public string Field2 { get; set; } 
    public string Field3 { get; set; } 
    } 

    public Class Bloc2{ 
    public string Field1 { get; set; } 
    public string Field2 { get; set; } 
    public string Field3 { get; set; } 
    } 
    . 
    . 
    . 
} 

하지만 내 기능을 쓸 수있는 방법이 솔루션

!

답변

0

심지어 테스트 데이터에서도 동일한 문제가 발생했습니다. 엔드 투 엔드 워크 플로우가 포함되어 있으므로 각 테스트마다 20 ~ 30 개의 필드를 전달해야합니다. 당신이 (당신의 경우 등 TAB1, TAB2를) 입력 값의 각 세트에 대한 테이블 클래스를 만들 필요가 당신이

당신은 통과보다는 시나리오 개요 Scenatio 를 사용할 수있는 테이블을 사용하는 경우는 매우 어려울 것이다 입력 값 아래 예를 참조하십시오.

# Basic Login check 
# Verifies whether user is able to login or not 
Scenario Outline: REG - Login Check 
Given I have logged in using "<username>" and "<password>" 
When I should see my username after login 
Then I will logout of Echo 
Examples: 
| username   | password   |Field1|Field2|Field3|Field4|Field5| 
| lee kirby-walker | LKirby-Walker10* |input1|input2|input3|input4|input5| 
| sample 1   | pwd1    |input6|input7|input8|input9|input10| 

테스트 데이터 행을 여러 개 전달할 수 있습니다. 그러나 VS에서 많은 테스트 케이스를 생성합니다. 이 테스트 데이터 값은 매개 변수로 단계 정의 메소드에 전달됩니다.

내가 "사용자 이름"과 시나리오 개요 당신이 예를 사용해야합니다

 [Given(@"I have logged in using ""(.*)"" and ""(.*)""")] 
     public void LogInUsingUsernameAndPassword(string userName, string password) 
     { 
      ScenarioContext.Current["userName"] = userName; 
      UserHomePage = LoginPage.Login(userName, password); 
      Reporter.ReportNote(string.Format("User {0} logged in successfully", userName), Status.Pass); 
     } 

그러나 "암호"를 사용하여 로그인 한 감안할 단계 위한 단계 정의 아래 참조 그렇지 않으면 specflow 오류가 발생합니다 .

+0

여기 제가 여러 예제를 사용하여 테스트하려고하지 않기 때문에 제 문제를 이해하지 못했을 것이라고 생각합니다. 그러나이 예제 중 하나지만 테스트해야하는 웹 페이지에는 여러 필드가 포함되어 있습니다.하지만 당신이 얘기하는 것은 난 단지 2 필드 사용자 이름과 passwor가 있고 여러 예제와 그 두 필드를 테스트하고 싶습니다. – user3446229

+0

내가 제공 한 것은 단지 예일 뿐이다. 원하는만큼 많은 테스트 데이터 필드를 추가 할 수 있습니다. 사용자 이름 및 암호와 마찬가지로 Field1, Field2, Field3 .. 등을 추가 할 수 있습니다. 20 개 이상의 필드를 테스트에 사용했습니다. 원하는 경우 동일한 테스트에 대해 서로 다른 테스트 데이터 세트를 사용할 수 있습니다. 그렇지 않으면 하나의 세트 만 사용하십시오. –

+0

또 같은 문제는 여기에 솔루션을 구현하는 방법,이 단계입니다. 제 경우에는 ** 예제 **를 사용하려고하지 않을 것입니다. 단 하나의 행이긴하지만 문제는 내가 직면 한 것입니다.이 솔루션을 구현할 때입니다. 나는 5 개의 필드가있는리스트를 사용해야한다. 문제는 입력이 아닌 필드의 수이다. – user3446229

관련 문제