RestSharp
1. Adım VS (Visual Studio) üzerinden yeni bir Class Library projesi oluşturuyoruz.File>NewProject menüsünü tıkladığımızda NewProject penceresi açılacak. Bu pencereden .Net Core>Class Library i seçiyoruz.
2. Adım testimizi NUnit üzerinden koşturmak için Nuget paketlerini eklememiz gerekiyor. Solution Explorer üzerinden projemizin üzerine gelip sağ tık yapıyoruz. Açılan menüden Manage NuGet Packages ı tıklıyoruz.
NuGet yönetim menüsünden Browse seçtikten sonra Nuniti aratıyoruz indirmemiz gereken paketler NUnit, Nunit3TestAdapter, Microsofr.NET.Test.Sdk ve ResSharper ı projemize ekliyoruz.
Sıra geldi testimizi yazmaya (Kodlamaya)
3. Adım ilk önce apimizin çalıştığını doğrulayalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
[Test] public void GetListUsers() { //öncelikle client ve request oluşturuyoruz //client'a base ureli requeste de metot ve end point bilgilerini veriyoruz. RestClient client = new RestClient("https://reqres.in"); //eğer herhangi bir authentication gerekliyse aşağıdaki gibi bir tanımlama yapabiliriz. //client.Authenticator = new OAuth2UriQueryParameterAuthenticator("xxxx"); RestRequest request = new RestRequest("/api/users",Method.GET); //header ve parametre tanımlarını yapıyoruz request.AddHeader("Content-Type"], "application/json"]) .AddQueryParameter("delay", "3"); //artık get requestimizi çalıştırabiliriz. IRestResponse response= client.Execute(request); //responsun başarılı olduğunu doğruluyoruz Assert.IsTrue(response.IsSuccessful); // return response; } |
4. Adım Şimdide response değişkenlerinden birini doğrulayalım.
1 2 3 4 5 6 7 8 9 10 |
//response stringe çeviriyoruz var body = response.Content; //JObject tipine convert ediyoruz. var dto = JsonConvert.DeserializeObject(body); //değikeni çağırıp son olarak string e cast ediyoruz String total_pages =(string)dto.GetValue("total_pages"); // Aldığımız değişkeni istediğimiz şekilde doğrulayabiliriz int totalPages=Int32.Parse(GetValue(response, "total_pages")); Assert.IsTrue(totalPages>0); |
5. Adım JsonSchema doğrulamasından bahsetmek istiyorum. Api den dönen sonucu JsonSchema üzerinden doğruladığınızda değişkenler doğru tipte mi döndü, dönmesi gerektiği halde dönmeyen herhangi bir değişken var mı v.b. bir çok şeyi aynı anda kontrol etmiş oluyoruz. Öncelikle şema için bir json dosyası hazırlayıp şemamızı kaydetmeliyiz. Şema oluşturmak için https://www.jsonschema.net/
ListUserApi JsonSchema
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
{ "definitions": {}, "$schema": "http://json-schema.org/draft-07/schema#", "$id": "http://example.com/root.json", "type": [ "object", "null" ], "properties": { "page": { "$id": "#/properties/page", "type": [ "integer", "null" ] }, "per_page": { "$id": "#/properties/per_page", "type": [ "integer", "null" ] }, "total": { "$id": "#/properties/total", "type": [ "integer", "null" ] }, "total_pages": { "$id": "#/properties/total_pages", "type": [ "integer", "null" ] }, "data": { "$id": "#/properties/data", "type": [ "array", "null" ], "items": { "$id": "#/properties/data/items", "type": [ "object", "null" ], "properties": { "id": { "$id": "#/properties/data/items/properties/id", "type": [ "integer", "null" ] }, "first_name": { "$id": "#/properties/data/items/properties/first_name", "type": [ "string", "null" ], "pattern": "^(.*)$" }, "last_name": { "$id": "#/properties/data/items/properties/last_name", "type": [ "string", "null" ], "pattern": "^(.*)$" }, "avatar": { "$id": "#/properties/data/items/properties/avatar", "type": [ "string", "null" ], "pattern": "^(.*)$" } } } } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
//response'su JObject tipine parse ediyoruz. JObject jobject = JObject.Parse(response.Content); //dosyadan şemayı okuyup oluşturduğumuz jsonschema ya atıyoruz. JsonSchema jschema = new JsonSchema(); using (StreamReader file = File.OpenText(SchemaPath + jsonPath)) using (JsonTextReader reader = new JsonTextReader(file)) { jschema = JsonSchema.Read(reader); } /*son olarak response dan gelen şemayı daha önceden tanımladığımız şema ile doğruluyoruz. */ Assert.IsTrue(jobject.IsValid(jschema)); |
Projeyi buradan indirebilirsiniz https://github.com/serhatozdursun/ApiAutometedTest1