Pandaria - GraphQL API测试

Pandaria从0.3.0开始支持GraphQL API的自动化测试。目前只支持Query和Mutation。

配置URL

使用Pandaria对RESTFul API进行测试时,我们会在.feature文件的顶端配置当前feature工作目录和基本的API的Endpoint。如:

Background:
  * dir: features/rest-api-test
  * base uri: http://localhost:10081/your-rest-api
复制代码

这样在测试中可以使用相对路径来发送请求:

* uri: /users/me
* send: GET
* status: 200
* verify: '$.username'='jakim'
* verify: '$.age'=18
复制代码

不同与REST, GraphQL对于Query和Mutation通常只有一个唯一的Endpoint, 使用base uri关键字可以配置这个Endpoint。如:

Background:
  * dir: features/graphql-test
  * base uri: http://localhost:10081/graphql
复制代码

GraphQL Query

配置好基本目录后,就可以编写GraphQL的测试了,使用graphql关键字来输入查询语句。

Scenario: basic query without specify operation name
    * graphql:
    """
    query bookById($id: String){
      book(id: $id) {
        title
        isbn
        author {
          name
        }
      }
    }
    """

    * variables:
    """
    {
      "id": "1"
    }
    """
    * send
    * verify: '$.data.book.title'='CSS Designer Guide'
    * verify: '$.data.book.isbn'='ISBN01123'
    * verify: '$.data.book.author.name'='someone'
复制代码
  • 上述代码首先配置了一段GraphQL的查询语句,根据id查询booktitleisbnauthor,以及authorname字段。
  • 这段查询语句需要一个参数,使用 variables关键字,配置GraphQL的参数。
  • send关键字发送查询到GraphQL服务器端。
  • verify关键字对查询结果进行验证。
  • variables不是必须的,如果查询语句中不需要输入参数,可省略。

GraphQL Mutation

Mutation与Query的操作一模一样,只需要将Query语句换成Mutation语句即可,不赘述。

将GraphQL语句放在文件中

使用Pandaria进行REST测试时,为了提高可读性,我们会将请求体放在文件中如:

* uri: http://localhost:10080/users
* request body: requests/user.json
* send: POST
* status: 200
* verify: '$.id'='auto-generated'
* verify: '$.username'='jakim'
* verify: '$.age'=18
复制代码

同样的,我们也可以将GraphQL的语句(和/或)GraphQL变量放在文件中,来提高测试用例的可读性,如:

* graphql: query_book_by_id.graphql
* variables: css_designer_guide.id.json
* send
* verify: '$.data.book.title'='CSS Designer Guide'
* verify: '$.data.book.isbn'='ISBN01123'
* verify: '$.data.book.author.name'='someone'
复制代码

GraphQL语句中包含多个操作

同一个GraphQL文件支持包含多个GraphQL操作,可以通过operation关键字来指定需要执行的操作,如:

Scenario: query with operation name
    * graphql: query_book_by_id.graphql
    * variables: css_designer_guide.id.json
    * operation: bookById
    * send
    * verify: '$.data.book.title'='CSS Designer Guide'
    * verify: '$.data.book.isbn'='ISBN01123'
    * verify: '$.data.book.author.name'='someone'
复制代码

更多用法参考Pandaria官方文档

转载于:https://juejin.im/post/5d2360136fb9a07ebb05583b

你可能感兴趣的:(Pandaria - GraphQL API测试)