python测试用例生成器
nell的Python项目详细描述
马修·奥尔特尔,moertle@gmail.com>;
<%pre import sys %> ::NT(start) : 'A' # comment | 'B' <% print($$) %> ; <%post print($$) %>
常数
生产中的常量可以由双引号字符串、单引号字符串、十进制、十六进制或八进制数字组成。
A: "A" | 'A' | 65 | 0x41 | 0101;
串联
当产品被空格分隔时,它们被连接起来。
CONCAT: "CONC" 0x41 "TEN" 65 "TION";
选择
当存在多个产品时,随机选择一个。
NUMBER: '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
分组
GRP: ('A'|'B') ('C'|'D');
可能的值是“ac”、“ad”、“bc”或“bd”。
范围
NUM1: ('0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'){3}; NUM2: ('0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'){1,5};
num1将生成一个3位数的数字,而num2将生成一个1到5位数之间的随机长度的数字。
切片
产品的子字符串可以使用索引引用。
SLICE1: "0123456789" [:]; // 0123456789 SLICE2: "0123456789" [4]; // 4 SLICE3: "0123456789" [:4]; // 0123 SLICE4: "0123456789" [4:]; // 456789 SLICE5: "0123456789" [2:8]; // 234567 SLICE6: "0123456789" [-4]; // 6 SLICE7: "0123456789" [-4:]; // 6789 SLICE8: "0123456789" [:-4]; // 012345 SLICE9: "0123456789" [2:-2]; // 234567
每个产品的输出都记录在评论中。
内联python
<%pre import base64 %> NT: %base64.b64encode('string');
非终端
NT1: "The value of NT2 is " NT2; NT2: "substitution";
语义动作
$$
PSA1: PSA2 <% var = $$ %>; PSA2: "one" | "two";
在本例中,python变量var将包含“one”或“two”以供将来使用。
可变非端子
$*
NT1: $NT2; $NT2: "I WILL BE SUBSTITUTED INTO NT1 IN LOWERCASE" <% $* = $$.lower() %> ;
反向参考
BR: "A" | "B"; NT: BR \BR;
$BR: ("a"|"b") <% $* = $$.upper() %>; NT: $BR \$BR;
在这两种情况下,nt都将生成字符串“aa”或“bb”,而不是“ab”或“ba”。