ይህ ልጥፍ በ 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 የተረጋገጠ የአፒ ሙከራ ላይ እንዴት የኪምበርን ሽፋን እንዴት እንደሚቀመጥ እንመለከታለን ፡፡
እኛ ማድረግ ያለብን የመጀመሪያው ነገር በፕሮጀክቶቻችን ውስጥ የኩሽ ጥገኝነትን ማከል ነው ፡፡
በእኛ 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 በተረጋገጠው የኤፒአይ ሙከራዎች ላይ የኪያር ንጣፍ እንዴት እንደሚጨምር ደረጃ በደረጃ መመሪያን በዚህ ጽሑፍ ውስጥ ሸፍነናል ፡፡ ይህን በማድረግ ቴክኒካዊ ባልሆኑ ሰዎች የበለጠ ሊነበቡ በሚችሉ የባህሪ ፋይሎች ውስጥ የእኛን ሁኔታ መፃፍ እንችላለን ፡፡