Automatisation des tests avec les types énumérés Java

Nous invitons les futurs étudiants du cours Java QA Automation Engineer à participer à une leçon ouverte sur le thème "HTTP. Postman, newman, fiddler (charles), curl, SOAP. SOAPUI".







Et maintenant, nous vous suggérons de vous familiariser avec la traduction de documents utiles.










Le stockage des données de test nécessite généralement un type de données qui:





  • permet de déclarer plusieurs propriétés;





  • a un comportement minimal ou inexistant;





  • vous permet de créer facilement plusieurs entités identiques.





Les objets répondent presque à ces exigences. Mais alors, pour créer plusieurs entités, il faudrait créer plusieurs objets avec un petit nombre de propriétés et un comportement minimal (ou pas du tout). Par comportement minimal, j'entends un petit nombre de méthodes. Fondamentalement, pour chaque entité dont vous avez besoin, vous devez créer un nouvel objet, ce qui est un gaspillage de ressources. Au lieu de cela, vous pouvez utiliser Enum



un objet d'un type spécial.





Enum



, , , . Enum



, . GitHub, . Enum



.





enum- Java :

, . : , ,  — , . .





  , . , : , . , . Enum



. (), : AT, EE ES.





Enum



:





public enum Country {
    AT("Austria", Arrays.asList("Vienna", "Salzburg", "Innsbruck"), 43),
    EE("Estonia", Arrays.asList("Tallinn", "Haapsalu", "Tartu"), 372),
    ES("Spain", Arrays.asList("Malaga","Madrid","Valencia","Corralejo"), 34);

    public final String label;
    public final List<String> cities;
    public int phoneNumberPrefix;

    Country(String label, List<String> cities, int phoneNumberPrefix) {
        this.label = label;
        this.cities = cities;
        this.phoneNumberPrefix = phoneNumberPrefix;
    }
}
      
      



, , . , label



, cities



phoneNumberPrefix



. : String



, List<String>



int



.





Enum



. , , AT



, : label



«», cities



(), : «», «» «», phoneNumberPrefix



«43».





, Enum



, : Country..



. : Country.AT.label



  «». , Country



.





, , .





Page



:





@FindBy(css = "#country") private WebElement countryDropdown;
@FindBy(css = "#city") private WebElement cityDropdown;
@FindBy(css = "#phone") public WebElement phoneNumberField;
@FindBy(css = "[type='submit']") public WebElement submitButton;

public Select countrySelect() {
    return new Select(countryDropdown);
}

public Select citySelect() {
    return new Select(cityDropdown);
}
      
      



countrySelect()



Select



. citySelect()



Select



. WebElement phoneNumberField



.





, , - . GitHub, .





 1.

, . , , 10 . :





, :





@Test
void selectCountryCityAndTypePhoneNumber() {
}
      
      



. , label



ES Enum



. : Country.ES.label



. :





page.countrySelect().selectByVisibleText(Country.ES.label);
      
      



, . : Country.ES.cities



. , ( ), : Country.ES.cities.get(2)



. :





page.citySelect().selectByVisibleText(Country.ES.cities.get(2));
      
      



, . Enum



: Country.ES.phoneNumberPrefix



. , 10 : Country.ES.phoneNumberPrefix + randomNumeric(8)



.





randomNumeric



, Apache Commons :





import static org.apache.commons.lang3.RandomStringUtils.randomNumeric;
      
      



, . Maven pom.xml



( ):





<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.9</version>
</dependency>
      
      



:





@Test
void selectCountryCityAndTypePhoneNumber() {
    page.countrySelect().selectByVisibleText(Country.ES.label);
    page.citySelect().selectByVisibleText(Country.ES.cities.get(2));
    page.phoneNumberField.sendKeys(Country.ES.phoneNumberPrefix + randomNumeric(8));
}
      
      



 2.

, . : ( ), , . , - .





.  , Enum



label



. , . , .





. , . , .





, Enum



. , , .





 





2, . (expected) . , label



Enum



, , . , -  Selenium, , (String), . -, , . .





List<String> expectedCountries = new ArrayList<>();
expectedCountries.add("");
      
      



label



, Enum



. Enum



label



. Enum



, Country.values()



.





for (Country country : Country.values()) {
    expectedCountries.add(country.label);
}
      
      



: «», «», «», «».





- (actual) . Select



, WebElements



, Select



. getText()



(option) .





List<String> actualCountries = new ArrayList<>();
for (WebElement option : page.countrySelect().getOptions()) {
    actualCountries.add(option.getText());
}
      
      



, , , Enum . , .





Collections.sort(expectedCountries);
Collections.sort(actualCountries);
assertEquals(expectedCountries, actualCountries);
      
      



:





@Test
void checkCountries() {
    List<String> expectedCountries = new ArrayList<>();
    expectedCountries.add("");
    for (Country country : Country.values()) {
        expectedCountries.add(country.label);
    }
    List<String> actualCountries = new ArrayList<>();
    for (WebElement option : page.countrySelect().getOptions()) {
        actualCountries.add(option.getText());
    }
    Collections.sort(expectedCountries);
    Collections.sort(actualCountries);
    assertEquals(expectedCountries, actualCountries);
}
      
      



 3.

. , . JavaScript, .





Enum



:





for (Country country : Country.values()) {
      
      



, for



, label



Enum



:





page.countrySelect().selectByVisibleText(country.label);
      
      



, , , . , , (actual) . -:





List<String> actualCities = new ArrayList<>();
for (WebElement option : page.citySelect().getOptions()) {
    actualCities.add(option.getText());
}
      
      



. Enum List<String> cities



. , . addAll()



cities



.





List<String> expectedCities = new ArrayList<>();
expectedCities.add(0, "");
expectedCities.addAll(country.cities);
      
      



. , .





Collections.sort(expectedCities);
Collections.sort(actualCities);
assertEquals(expectedCities, actualCities);
      
      



, , , . . , . :





@Test
void checkCities() {
    for (Country country : Country.values()) {
        page.countrySelect().selectByVisibleText(country.label);
        List<String> actualCities = new ArrayList<>();
        for (WebElement option : page.citySelect().getOptions()) {
            actualCities.add(option.getText());
        }
        List<String> expectedCities = new ArrayList<>();
        expectedCities.add(0, "");
        expectedCities.addAll(country.cities);
        Collections.sort(expectedCities);
        Collections.sort(actualCities);
        assertEquals(expectedCities, actualCities);
    }
}
      
      



, Enum



. GitHub:





  • HTML-  .





  • Page  .





  • Enum  ,





  •  .










"Java QA Automation Engineer".



"HTTP. Postman, newman, fiddler (charles), curl, SOAP. SOAPUI".












All Articles