<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      接口自動化(TestNG)

      數據驅動概念: 用戶輸入輸出數據來判斷測試用例是否通過從而驗證需求的測試.

      一、接口自動化框架搭建(TestNG數據驅動) ---parameter

        關鍵代碼:

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
      <suite name="TestNG" verbose="1">
          <parameter name="loginPhone" value="xxx"></parameter>
          <parameter name="isMobile" value= "false"></parameter>
          <test name="apiTest">
              <classes>
                  <class name="com.demo.Body" />
              </classes>
          </test>
      </suite> 
      @Test
          @Parameters({"loginPhone", "isMobile"})
          public static void postLogin(String loginPhone, String isMobile) {

       

       

      二、data provider 自定義二位對象數組

             注意事項: 1、定義DataProvider name, 如果沒有定義name屬性則匹配二維數組名

              2、test annotation 要指定dataProvider name和步驟1 的name值相同

              3、數組數據類型要和測試方法參數類型匹配。

      官網模板:

      //https://testng.org/doc/documentation-main.html
      //
      This method will provide data to any test method that declares that its Data Provider //is named "test1" @DataProvider(name = "test1") public Object[][] createData1() { return new Object[][] { { "Cedric", new Integer(36) }, { "Anne", new Integer(37)}, }; } //This test method declares that its data should be supplied by the Data Provider //named "test1" @Test(dataProvider = "test1") public void verifyData1(String n1, Integer n2) { System.out.println(n1 + " " + n2); }

      關鍵代碼方法一:

      package ddt;
      
      import org.testng.annotations.DataProvider;
      import org.testng.annotations.Test;
      
      import io.restassured.RestAssured;
      import io.restassured.response.Response;
      
      public class DataProTest {
      
          @DataProvider(name = "test1")
          public Object[][] createData1() {
              return new Object[][] { 
                      { "loginPhone", "xxxx" },
                      { "isMobile", "false" },
                      };
          }
      
          @Test(dataProvider = "test1")
          public static void postLogin(String loginPhone, String isMobile) {
              RestAssured.baseURI = "https://ipassport.damai.cn/newlogin/account/check.do";
              RestAssured.basePath = "";
              @SuppressWarnings("deprecation"

       

       

      方法二、

          

      package ddt;
      
      import org.testng.annotations.DataProvider;
      import org.testng.annotations.Test;
      
      import io.restassured.RestAssured;
      import io.restassured.response.Response;
      
      public class DataProTest {
      
          @DataProvider
          public Object[][] createData1() {
              return new Object[][] { 
                      { "loginPhone", "xxxx" },
                      { "isMobile", "false" },
                      };
          }
      
          @Test(dataProvider = "createData1")
          public static void postLogin(String loginPhone, String isMobile) {

       

      四、響應解析-響應狀態碼、響應頭域,響應Cookie

      關鍵代碼:

      System.out.println("響應狀態碼:" + String.valueOf(responseCode));
      String responseHearder = response.getHeader("token");
      System.out.println("響應頭域:" + String.valueOf(responseHearder));
      String responseCookie = response.getCookie("JSESSIONID");
      System.out.println("響應Cookie值:" + String.valueOf(responseCookie));
      String responseContent = response.getBody().print();

      響應解析Body 

              //方法一
              JsonPath getJsonValue = response.jsonPath();
              String nameValue = getJsonValue.get("name");
              System.out.println("namevalue: " + nameValue);
              //方法二
              JsonPath getResponseValue = response.jsonPath();
              String value = getResponseValue.get("$.data.file[1].version");

       

      五、請求封裝  

        封裝類:

      package com.tools;
      
      import io.restassured.RestAssured;
      import io.restassured.response.Response;
      
      public class ApiTool {
      
          public static String getWebCookie() {
              RestAssured.baseURI = "https://www.douyin.com";
              RestAssured.basePath = "/web/api/v2/platform/user/?id=1561475827829";
              Response response = RestAssured
                      .given()
                      .header("accept",
                              "application/json, text/plain, */*",
                              "user-agent",
                              "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36")
                      .param("id", "1561475827829").when().log().all().get();
              String responseContent = response.getBody().print();
              System.out.println(responseContent);
              String Cookie = response.getCookie("JSESSIONID");
              return Cookie;
          }
      
          public static Response webGet(String url) {
              String cookie = ApiTool.getWebCookie();
              Response response = RestAssured.given().cookie("JSESSIONID", cookie)
                      .when().log().all().post(url);
              return response;
          }
      
      }

        實現類

      import io.restassured.response.Response;
      
      import org.testng.annotations.Test;
      
      import com.tools.ApiTool;
      
      public class GetHomePageInfo {
          @Test
          public void getWebHomepage() {
              Response response = ApiTool.webGet("www.baidu");
              response.getBody().print();
      
          }
      
      }

       

      六、斷言

        Assert

      七、用例管理

        從class, method ,group 三個維度,依托功能測試設計按模板、功能點,用例優先級

         用例分類運行基礎是:解耦

              測試一個api的增刪改查

         如果不解耦,新增失敗,會導致后續的刪改查用例全部失敗

      class維度:

      method維度:

      group維度

       

      posted @ 2019-08-20 20:45  vame  Views(1171)  Comments(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲国产永久精品成人麻豆| 中国CHINA体内裑精亚洲日本| 亚洲欧美偷国产日韩| 色视频在线观看免费视频| 亚洲欧洲日产国码久在线| 国产人成亚洲第一网站在线播放 | 亚洲一级片一区二区三区| 天堂一区人妻无码| 老子午夜精品888无码不卡| 又大又黄又粗高潮免费| 亚洲精品成人福利网站| 自拍偷自拍亚洲精品播放| 成人无码一区二区三区网站| 亚洲精品人成网线在线播放va| 不卡一区二区国产在线| 亚洲av无码精品蜜桃| 日韩午夜一区二区福利视频 | 999国产精品999久久久久久 | 精品国产一区二区三区2021| 欧洲无码一区二区三区在线观看| 国产一区二区三区导航| 都市激情 在线 亚洲 国产| 2020国产欧洲精品网站| 一道本AV免费不卡播放| 九九热在线视频免费播放| 蜜桃网址| 国产短视频一区二区三区| 狠狠色狠狠色综合久久蜜芽| 国产亚洲av夜间福利香蕉149| 人妻蜜臀久久av不卡| 亚洲欧美日韩愉拍自拍美利坚| 精品国产伦理国产无遮挡| 高清精品一区二区三区| 一区二区丝袜美腿视频| 亚洲第一无码专区天堂| 国产裸体无遮挡免费精品| 色老板精品无码免费视频| 日韩免费码中文在线观看| 国产精品VA尤物在线观看| 亚洲欧美激情在线一区| 亚洲精品综合网二三区|