frisby:响应数据提取和条件执行

时间:2016-05-05 09:27:54

标签: rest testing automation frisby.js

我正在尝试使用frisby进行一些测试或自动化。

假设我有2个请求需要一个接一个地执行。但是,第一个请求会创建一个资源并在标头中返回它的URI:

use warnings; 
use strict; 

my ($lev, @el, @res, $rret); 
while (my $str = <DATA>) 
{ 
    print "\nString: $str\n"; 
    @res = (); 

    # Drop two layers to start: strip last two ), split by ( and drop 0,1 
    $str =~ s/ (.*) \) [^)]* \) [^)]* $/$1/x; 
    @el = split '\(', $str; 
    @el = @el[2..$#el]; 
    # Edge case: may have one element and be done, but with extra ) 
    if (@el > 1) { $lev = join '(', @el }
    else         { ($lev = $el[0]) =~ s|\)||g } 
    push @res, $lev; 

    # Get next level and join string back, recursively 
    while ( $rret = nest_one($lev) ) {  
        $lev = join '(', @$rret; 
        push @res, $lev; 
        last if @$rret == 1; 
    } 

    print "\t$_\n" for @res; 
} 

# Strip last ) and past it, split by ( and drop first element 
sub nest_one { 
    (my $lev = $_[0]) =~ s/(.*) \) [^)]* $/$1/x; 
    my @el = split '\(', $lev; 
    shift @el; 
    return (@el) ? \@el : undef; 
} 

__DATA__ 
blabla(nothing(print me)) nanana (nanan) 
blablabla(aaaaaaa(eeee(bbbb(cccc)bbb))aa) 
blabla (blabla(hhhhh)) 

所以第二次调用的方式取决于第一次调用的响应头。 POST /resource 201 Location: /resource/123 看起来很有希望,但它似乎没有处理标题。文档似乎很短,并没有提到这一点。怎么办?

1 个答案:

答案 0 :(得分:0)

您可以使用.after((res) -> ...这将允许您检查响应,其中包含您要查找的标头。首先打印console.log(res)响应以检查是否存在此类标题,然后您可以使用以下方法对其进行一些操作:res.headers.theOneThatYouWouldLikeToUse