赏味不足程序员自动化测试

接口初心者心得第二版

2016-11-03  本文已影响205人  赏味不足

好吧,持续做了几天,我继续来做分享了,也希望各位前辈多多指教。我表示我还不是很懂。

目前使用的testng和rest-assured。这几天增加了DataProvider和rest-assured的方法。

testng这里是支持新建数据驱动的xml,比如:

<?xml version="1.0" encoding="UTF-8"?>
<data>
    <testmethod1>
        <abc>123</abc>
        <def>456</def>
    </testmethod1>

接着可以通过在类中定义DataProvider来实现xml的解析实现,假设dataprovider对应的方法在A类。

@DataProvider
    public static Object[][] providerMethod(Method method) {
...
}

在接下来的要使用到数据的时候就可以直接去添加dataprovider对应的的标签,同时testng会根据test method的方法名去找xml中对应的数据,如:

    @Test(dataProvider = "providerMethod", dataProviderClass = A.class)
    public void testmethod1(Map<?, ?> param) throws InterruptedException {
...

    }

这样就可以直接一对多的进行数据驱动了。

这里我有个问题,一般非testng.xml的准备数据的xml里面,很多数据都是不同类型的,但现在我这边读取出来都是String,这个数据类型的设置在xml里面能够直接设置么?或者还有什么好的方式?欢迎大家来告诉我哈

接着再来看下rest-assured吧,Google了相关信息,相比其它框架少了不少。我就用下来的情况说下心得吧。rest-assured也是结合了BDD风格的一个框架。通过given,when,then的结合更方便的进行了API的验证。虽然我个人还是不是很习惯这个语法。我们来看几个例子。
比如这样的Json:

{
"lotto":{
 "lottoId":5,
 "winning-numbers":[2,45,34,23,7,5,3],
 "winners":[{
   "winnerId":23,
   "numbers":[2,45,34,23,3,5]
 },{
   "winnerId":54,
   "numbers":[52,3,12,11,18,22]
 }]
}
}

那么我们的验证就可以这样写:

expect().
         body("lotto.lottoId", equalTo(5)).
         body("lotto.winners.winnderId", hasItems(23, 54)).
when().
       get("/lotto");

当然我们其实在使用mvn跑的时候我们希望能够看到更多的req,res的日志的话我们可以这样增加,这就是rest-assured style了。

expect().
         log().all().
         body("lotto.lottoId", equalTo(5)).
         body("lotto.winners.winnderId", hasItems(23, 54)).
when().
         get("/lotto");

我们也可以看一个比较复杂点的语句吧。

  given().log().all().contentType("application/json")
                .header("cookie",
                        "abcdefghijkl")
                .request().body(jsonbody).expect().statusCode(200).body("result", equalTo(true)).when()
                .post("/xxxxx");

所以其实一条语句中将请求,返回,断言,包括url_param等都包括在内了。看个人喜好了。不过从rest assured框架的支持上来讲,断言支持的类型很多,有兴趣的也可以试试看。我目前先按照这个架构往下尝试了,大家可以继续等我的心得。

上一篇 下一篇

猜你喜欢

热点阅读