በተረጋገጡ የኤፒአይ ሙከራዎች አናት ላይ ኪያር ንጣፍ እንዴት እንደሚታከል

ይህ ልጥፍ በ REST- በተረጋገጠው በተፃፉ የኤፒ ምርመራዎች ላይ የኩሽ ሽፋን እንዴት እንደሚጨምር ደረጃ በደረጃ መመሪያ ይሰጣል ፡፡

REST-guarantee’s DSL በተሰጠ-መቼ-ከዚያም ቅርጸት ውስጥ የሙከራዎች የ ‹BDD› አይነት ጽሑፍን አስቀድሞ ያቀርባል ፣ ግን አሁንም በኮዱ ውስጥ ተቀበረ ፡፡ በሌላ አገላለጽ ፣ ምን ዓይነት ሁኔታዎች እንደተሸፈኑ ማየት ከፈለጉ አሁንም ወደ ኤፒ ፈተናዎች ቆፍረው ኮዱን ማንበብ አለብዎት ፡፡ የባህሪ ፋይሎች የሉም ፡፡

የዚህ ልኡክ ጽሁፍ ዓላማ አሁን ያሉትን የ ‹REST› የተረጋገጡ የ api ሙከራዎች ኪያር እና የባህሪይ ፋይሎችን በመጨመር እንደገና ለማጣራት ነው ፣ ስለሆነም የመነሻውን ኮድ ማየት ሳያስፈልግ ሁኔታዎችን በበለጠ በግልጽ ለማንበብ ፡፡




እንደገና የተረጋገጠ የኤፒአይ ሙከራዎች

በዚህ ምሳሌ ውስጥ የተጠቃሚ ፈጠራን ኤፒን ለመፈተሽ ኮድ እንጽፋለን ፡፡

በመጀመሪያ ፣ ራሱን የቻለ REST- የተረጋገጠ እና የጁኒት ሙከራ አለን ፣ በሚከተሉት ውስጥ


src/test/java/io.devqa/scenarios

import io.restassured.RestAssured; import io.restassured.http.ContentType; import io.restassured.response.Response; import org.junit.jupiter.api.*; import static io.restassured.RestAssured.given; public class UserTests {
private static String path;
private static String validRequest = '{ ' +

' 'username': 'test-api-user', ' +

' 'email': 'test-api-user@email.com', ' +

' 'password': 'Passw0rd123!', ' +

' 'name': 'Test Api-User' }';
@BeforeAll
public static void setConfig() {
RestAssured.baseURI = 'https://localhost:8080';
path = '/users';
}
@Test
public void shouldBeAbleToCreateNewUser() {
Response createUser = given()


.auth()


.preemptive()


.basic('MY_USERNAME', 'MY_PASSWORD')


.header('Accept', ContentType.JSON.getAcceptHeader())


.contentType(ContentType.JSON)


.body(validRequest)


.post(path)


.then().extract().response();
Assertions.assertEquals(201, createUser.getStatusCode());

String username = createUser.jsonPath().get('username');
String email = createUser.jsonPath().get('email');
String name = createUser.jsonPath().get('name');
String id = createUser.jsonPath().get('id');

Assertions.assertEquals('test-api-user', username);
Assertions.assertEquals('test-api-user@email.com', email);
Assertions.assertEquals('Test Api-User', name);
Assertions.assertNotNull(id);
} }

ከላይ የተጠቀሰው ሙከራ በጁኒት ሊጠራ ስለሚችል በቀጥታ ከክፍሉ ሊሠራ ይችላል።

setConfig() ዘዴ ቅድመ ሁኔታውን ያስቀምጣል። የሙከራ ዘዴው ድርጊቶቹን (ጥያቄውን በመላክ) ያካሂዳል ከዚያም በምላሽ ኮድ እና በምላሽ ክፍያ ጭነት ላይ ያረጋግጣል ፡፡

በመቀጠልም ከላይ በተጠቀሰው የ REST የተረጋገጠ የአፒ ሙከራ ላይ እንዴት የኪምበርን ሽፋን እንዴት እንደሚቀመጥ እንመለከታለን ፡፡




በኩሽ እና በ REST የተረጋገጡ የኤፒአይ ሙከራዎች

እኛ ማድረግ ያለብን የመጀመሪያው ነገር በፕሮጀክቶቻችን ውስጥ የኩሽ ጥገኝነትን ማከል ነው ፡፡

በእኛ build.gradle ፋይል ፣ እነዚህን በ dependencies:

dependencies {
testCompile 'io.cucumber:cucumber-java:6.2.2'
testCompile 'io.cucumber:cucumber-junit:6.2.2'
testCompile 'io.rest-assured:rest-assured:3.3.0'
testCompile 'com.jayway.jsonpath:json-path:2.4.0' }

እና እነዚህ ከ configuration በታች በ build.gradle ፋይል

configurations {
cucumberRuntime {
extendsFrom testImplementation
} }

እንዲሁም በ build.gradle ውስጥ አንድ ተግባር መፍጠር አለብን ሁኔታዎችን የያዙ የኪያር የባህሪ ፋይሎችን ለማሄድ ፋይል ያድርጉ ፡፡


task cucumber() {
dependsOn assemble, compileTestJava
doLast {
mkdir 'build/test-results/'
javaexec {

main = 'io.cucumber.core.cli.Main'

classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output

args = ['--plugin', 'pretty', '--plugin', 'html:build/test-results/functional.html', '--plugin', 'junit:build/test-results/functional.xml','--tags', '@functional', '--glue', 'scenarios', 'src/test/resources']
}
} }

የፕሮጀክት መዋቅር ለኩሽ

እንዲሁም ለኩሽ ለውጦችን ለማስተናገድ የፕሮጀክታችንን መዋቅር ማሻሻል አለብን ፡፡

የባህሪው ፋይሎች በሚከተሉት ውስጥ ይቀመጣሉ

src/test/resources/scenarios

የእርምጃው ትርጓሜዎች በ ውስጥ ይቀመጣሉ


src/test/java/scenarios

በመቀጠል UserScenarios.feature የተባለ የባህሪ ፋይል እንፈጥራለን እና ከ | _ + + | | በታች አስቀምጠው አቃፊ.

የባህሪው ፋይል ይመስላል:

src/test/resources/scenarios

በባህሪያችን ፋይል ውስጥ ከሚገኙት መግለጫዎች ጋር ሊጣበቁ የሚችሉ የእርምጃ ትርጓሜዎችን ለመፃፍ የእኛን በ REST የተረጋገጠ የጁኒት ሙከራችንን መፍረስ አለብን።


@functional Feature: User Scenarios Scenario: I should be able to create a new user
Given the users endpoint exists
When I send a valid create user payload
Then response status code should be 201
And create user response should be valid

ከላይ ባለው የእርምጃ ትርጓሜዎች ላይ እንደሚታየው በባህሪው ፋይል ውስጥ ባለው ሁኔታ ውስጥ ለሚገኘው እያንዳንዱ መስመር ፣ ተመጣጣኝ የእርምጃ ፍቺ አለን ፡፡

ዘዴው ከ import io.cucumber.java.en.And; import io.cucumber.java.en.Given; import io.cucumber.java.en.Then; import io.cucumber.java.en.When; import io.restassured.RestAssured; import io.restassured.http.ContentType; import io.restassured.response.Response; import org.junit.jupiter.api.Assertions; import static io.restassured.RestAssured.given; public class UserScenarios {
private String path;
private Response response;
private String validRequest = '{ ' +

' 'username': 'test-api-user', ' +

' 'email': 'test-api-user@email.com', ' +

' 'password': 'Passw0rd123!', ' +

' 'name': 'Test Api-User' }';
@Given('the users endpoint exists')
public void preReq() {
RestAssured.baseURI = 'https://localhost:8080';
path = '/users';
}
@When('I send a valid create user payload')
public void createUser() {
response = given()


.auth()


.preemptive()


.basic('MY_USERNAME', 'MY_PASSWORD')


.header('Accept', ContentType.JSON.getAcceptHeader())


.contentType(ContentType.JSON)


.body(validRequest)


.post(path)


.then().extract().response();
}
@Then('response status code should be {int}')
public void checkResponseStatusCode(int code) {
Assertions.assertEquals(code, response.getStatusCode());
}
@And('create user response should be valid')
public void verifyResponse() {
String username = response.jsonPath().get('username');
String email = response.jsonPath().get('email');
String name = response.jsonPath().get('name');
String id = response.jsonPath().get('id');

Assertions.assertEquals('test-api-user', username);
Assertions.assertEquals('test-api-user@email.com', email);
Assertions.assertEquals('Test Api-User', name);
Assertions.assertNotNull(id);
} }
ጋር ማብራሪያ ቅድመ ሁኔታዎችን ያስቀምጣል ፡፡ ዘዴው ከ Given ጋር ማብራሪያ ጥያቄውን ለመላክ እና በመጨረሻም ዘዴውን ከ When ጋር ያደርገዋል ማብራሪያ በምላሹ ላይ ያሉትን ማረጋገጫዎች ያከናውናል ፡፡

ከላይ የተጠቀሱትን ለማስፈፀም እኛ ማድረግ ያለብን ትዕዛዙን ማስፈፀም ብቻ ነው Then ከፕሮጀክቱ ሥር ባለው ተርሚናል ውስጥ ፡፡

ሙከራዎቹ ከጨረሱ በኋላ ውጤቶቹ በ ./gradle cucumber ውስጥ ይቀመጣሉ።



ማጠቃለያ

በ REST በተረጋገጠው የኤፒአይ ሙከራዎች ላይ የኪያር ንጣፍ እንዴት እንደሚጨምር ደረጃ በደረጃ መመሪያን በዚህ ጽሑፍ ውስጥ ሸፍነናል ፡፡ ይህን በማድረግ ቴክኒካዊ ባልሆኑ ሰዎች የበለጠ ሊነበቡ በሚችሉ የባህሪ ፋይሎች ውስጥ የእኛን ሁኔታ መፃፍ እንችላለን ፡፡