Rest Assured 的XML断言及取值

moco XML接口例子:https://blog.csdn.net/weixin_36558635/article/details/107388732
创建XML脚本

<shopping>
    <category type="groceries">
        <item>
            <name>Chocolate</name>
            <price>10</price>
        </item>
        <item>
            <name>Coffee</name>
            <price>20</price>
        </item>
    </category>
    <category type="supplies">
        <item>
            <name>Paper</name>
            <price>5</price>
        </item>
        <item quantity="4">
            <name>Pens</name>
            <price>15</price>
        </item>
    </category>
    <category type="present">
        <item when="Aug 10">
            <name>Kathryn's Birthday</name>
            <price>200</price>
        </item>
    </category>
</shopping>

XML断言及取值

package Takming.com;

import io.restassured.path.xml.element.Node;
import io.restassured.response.Response;
import org.junit.Test;


import java.util.List;

import static org.hamcrest.Matchers.*;
import static org.junit.Assert.assertThat;
import static io.restassured.RestAssured.*;
import  static io.restassured.matcher.RestAssuredMatchers.*;


public class Get_XmlBody {

    public Response get_Xml(){
     Response Xmlpath=  when().get("http://localhost:8886/XML/demo");
        return Xmlpath;
    }


    //取值部分
    @Test
    public void Xml(){
        //使用节点数组索引获取商品名称
        String name= get_Xml().xmlPath().get("shopping.category.item[0].name");
        //使用getList()方法获取所有的商品名称
        List<String> list=get_Xml().xmlPath().getList("shopping.category.item.name");
       //使用getList()方法取出所有商品的价格
        List<String> list1=get_Xml().xmlPath().getList("shopping.category.item.price");
        System.out.println(list1);
    }
    @Test
    public void Xml_size(){
        //使用函数获取商品;Eg:size()
        int item= get_Xml().xmlPath().get("shopping.category.item.size()");
        System.out.println(item);
    }

    @Test
    public void Xml_Node(){
        //获取category标签数据
        Node category=get_Xml().xmlPath().get("shopping.category[0]");
        //用category节点标签获取所有商品详情
        List<Node> list = get_Xml().xmlPath().getList("shopping.category");
        System.out.println(list);
    }
    @Test
    public void Xml_type(){
        //使用标签的type获取商品的详情
        List<String> type1 = get_Xml().xmlPath()
                .getList(
                        "shopping.category.findAll{it.@type == 'groceries'}");

        //使用函数size()
        int typeint=get_Xml().xmlPath().get("shopping.category.findAll{it.@type=='groceries'}.size()");

        System.out.println(typeint);
    }
    @Test
    public void Xml_price(){
        //xml使用findAll()方法获取区间价格商品
        List<Node> itemp=get_Xml().xmlPath()
                .getList("shopping.category.item.findAll{item -> " +
                        "def price=item.price.toFloat();price>=10&&price<=20}");
        System.out.println(itemp);

    }
    @Test
    public void Xml_path(){
        //XML深度取值取值可以使用**代替路径
        int price= get_Xml().xmlPath().getInt("**.find{it.name=='Chocolate'}.price");
        System.out.println(price);

    }

//断言部分


    @Test
    public void Assertion_xml(){
        //使用节点数组索引获取商品名称进行断言
        get_Xml().then().log().all().body("shopping.category.item[0].name",equalTo("Chocolate"))
        .body("shopping.category.item[0].price",equalTo("10"));

        //对所有商品名称节点进行断言时先将所有的商品放到一个List里,然后使用Junit中AsserThat()方法断言
        List<String>List=get_Xml().xmlPath().getList("shopping.category.item.name");
        assertThat(List,hasItems("Chocolate", "Coffee", "Paper", "Kathryn's Birthday"));
        System.out.println(List);

       // .body("shopping.category.item.name",hasItems("Chocolate"," Coffee","Kathryn's Birthday"));
        }
    @Test
    public void xml_price(){
        //xml用节点方式取出的值为String类型,所以equalTo()方法断言时必须加上是String类型 Eg:
        get_Xml().then().log().all().body("shopping.category.item[0].price",equalTo("10"));
        List<String> list=get_Xml().xmlPath().getList("shopping.category.item.price");
        assertThat(list,hasItems("10", "20", "5", "15", "200"));
        System.out.println(list);
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RestAssured是一个流行的Java自动化测试框架,用于编写和执行RESTful API测试。它可以通过简单的API来处理HTTP请求和响应,并且可以轻松地将请求和响应转换为可读性强的代码。RestAssured还可以使用Gherkin语言编写BDD测试,并且支持与JUnit和TestNG等测试框架集成。 使用RestAssured可以快速编写和执行HTTP请求,验证响应状态码、响应头、响应体等细节,并且可以使用各种验证方式进行验证,如JSON Schema验证、XPath验证、正则表达式验证等等。同时,RestAssured还支持多种HTTP身份验证方式,包括基本身份验证、摘要身份验证、OAuth等。 使用RestAssured编写自动化测试用例的步骤如下: 1. 引入RestAssured依赖。 2. 编写测试用例,包括HTTP请求和验证响应的代码。 3. 运行测试用例并查看测试结果。 下面是一个使用RestAssured编写的示例测试用例: ```java import io.restassured.RestAssured; import org.junit.Test; import static io.restassured.RestAssured.given; public class RestAssuredTest { @Test public void testGet() { // 发送GET请求 given() .get("https://jsonplaceholder.typicode.com/posts/1") // 验证响应状态码和响应体 .then() .statusCode(200) .body("title", equalTo("sunt aut facere repellat provident occaecati excepturi optio reprehenderit")); } } ``` 上面的示例测试用例发送了一个GET请求,验证了响应状态码和响应体。使用RestAssured,可以非常方便地编写和执行各种HTTP请求和自动化测试用例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值