Citrus Framework - 如何跟踪和打印来自服务器的响应

时间:2017-08-04 04:37:38

标签: citrus-framework

我正在使用CitrusFramework进行Rest API测试。我已经扫描了该方法,但没有得到任何可以打印响应堆栈跟踪的内容。

此致 Bidhu

1 个答案:

答案 0 :(得分:3)

我假设您要分析从受测试服务器获得的HTTP响应的详细信息。

设置调试模式

首先,您需要将Citrus的日志级别设置为DEBUG。您可以在Citrus sample-http存储库中找到有关如何实现此目标的示例:
https://github.com/christophd/citrus-samples/blob/master/sample-http/src/test/resources/log4j.properties

有两点需要注意:

  1. log4j.logger.com.consol.citrus=DEBUG:将所有Citrus类设置为以调试模式登录
  2. log4j.appender.out=org.apache.log4j.ConsoleAppender会将日志附加到控制台日志中,因此它会显示在您的控制台中。
  3. 除非项目中已有log4j.propertieslog4j.xml,否则您只需将示例中的log4j.properties复制到项目src/test/resources/即可。 否则,您需要将条目添加到现有的Log4J设置中。

    sample-flightbooking中可以找到一个不同的更复杂的例子(使用Log4Js XML格式):
    https://github.com/christophd/citrus-samples/blob/master/sample-flightbooking/src/test/resources/log4j.xml

    在日志中查找跟踪

    如果您将Citrus设置为DEBUG,那么您会在日志中找到类似于以下内容的内容:

    18:10:55,743 DEBUG ingClientInterceptor| Sending Http request message
    18:10:55,744 DEBUG   Logger.Message_OUT| GET https://jsonplaceholder.typicode.com/posts/1
    Accept:text/plain, application/json, application/*+json, */*
    Content-Type:text/plain;charset=UTF-8
    Content-Length:0
    
    
    18:10:56,096 DEBUG ingClientInterceptor| Received Http response message
    18:10:56,096 DEBUG    Logger.Message_IN| HTTP/1.1 200 OK
    Date:Mon, 07 Aug 2017 16:10:52 GMT
    Content-Type:application/json; charset=utf-8
    Transfer-Encoding:chunked
    Connection:keep-alive
    Set-Cookie:__cfduid=d5ca2a6c467ea8aa495ab766d86e16eef1502122252; expires=Tue, 07-Aug-18 16:10:52 GMT; path=/; domain=.typicode.com; HttpOnly
    X-Powered-By:Express
    Vary:Accept-Encoding
    Access-Control-Allow-Credentials:true
    Cache-Control:public, max-age=14400
    Pragma:no-cache
    Expires:Mon, 07 Aug 2017 20:10:52 GMT
    X-Content-Type-Options:nosniff
    Etag:W/"124-yiKdLzqO5gfBrJFrcdJ8Yq0LGnU"
    Via:1.1 vegur
    CF-Cache-Status:HIT
    Server:cloudflare-nginx
    CF-RAY:38ab822e68527d08-MUC
    
    {
      "userId": 1,
      "id": 1,
      "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
      "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
    }
    

    如您所见,您将在日志中找到整个HTTP跟踪。

    如果您需要真正的HTTP跟踪(不依赖于任何日志记录框架),那么最依赖的方法是使用Wireshark或TCPMon等嗅探工具。我有时使用TCPMon(即使它不再支持)进行调试。

    另一种方法是向HTTP客户端添加拦截器,如Citrus documentation中所述。这就是Citrus'LoggingClientInterceptor记录您在示例中可以看到的HTTP跟踪的方式。