一,使用的lib如下:UdpLibrary.py 主要用于测试基于udp的16进制协议的测试。socket的read是阻塞式的,使用robot自带timeout来进行超时计算,重复测试的关键字
Repeat Keyword也是系统自带的,详见user guide
import os import sys import socket class SipgwLibrary: def init(self, port_str): print "port is ",port_str self.recv_str = '' port = int(port_str) self.s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) host = '' self.s.bind((host, port)) def set_server(self, host, port): self.ser_address = (host, int(port)) def connect(self, host, port): self.host = host self.textport = port try: self.port = int(self.textport) except ValueError: self.port = socket.getservbyname(self.textport, 'udp') self.s.connect((self.host, self.port)) def send(self, data): print "send str[%s] to %s:%d"%(data, self.ser_address[0], self.ser_address[1]) self.s.sendto(data, self.ser_address) def read(self): # while 1: buf, address = self.s.recvfrom(2048) print "Got data[", buf, "] from", address self.recv_str = buf def recv_should_be(self, expected_recv): if expected_recv != self.recv_str: raise AssertionError("Expected recv to be '%s' but was '%s'" % (expected_recv, self.recv_str)) def run(self): self.init(30000) # self.connect("localhost", 20000) self.set_server('172.17.27.19', 20000) self.send("hello") self.read() print "after read" self.recv_should_be("OK") if __name__ == "main": sip_test = SipgwLibrary() print "test" sip_test.run()
二. 四个相关表
Setting |
Value |
Value |
value |
Value |
Library |
OperatingSystem |
|||
Library |
testlibs/SipgwLibrary.py |
|||
Test Setup |
Server init |
${LOCAL_PORT} |
||
Test Teardown |
||||
Test Timeout |
5 seconds |
#默认测试用例超时时间 |
||
Meta: Version |
1.0 |
|||
Meta: More Info |
测试项目名称 |
**功能测试 |
Variable |
Value |
Value |
Value |
Value |
${NPAC_ADDR} |
172.17.27.100 |
|||
${NPAC_PORT} |
6000 |
|||
${LOCAL_PORT} |
6001 |
|||
${**_ADDR} |
172.17.27.19 |
|||
${**_PORT} |
6000 |
Test Case |
Action |
Argument |
Argument |
Argument |
初始化本地端口 |
Server init |
${LOCAL_PORT} |
||
测试**1 |
测试**命令 |
AA BB 00 01 |
AA BB 00 02 |
测试**1 |
测试**2 |
测试**命令 |
AA BB 00 00 00 |
AA BB 00 00 01 |
测试**2 |
重复测试**3 |
[Timeout] |
500 |
#重复5次,需要重置超时时间 |
|
Repeat Keyword |
100 |
测试**1 |
AA BB ** |
Keyword |
Action |
Argument |
Argument |
Argument |
Server init |
[Arguments] |
${LOCAL_PORT} |
||
Init |
${LOCAL_PORT} |
|||
测试**命令 |
[Arguments] |
${SEND_STRING} |
${RECV_STRING} |
${COMMENT} |
设置对端地址 |
${**_ADDR} |
${**_PORT} |
||
发送字符串 |
${SEND_STRING} |
|||
读取并检查 |
${RECV_STRING} |
${COMMENT} |
||
设置对端地址 |
[Arguments] |
${NPAC_ADDR} |
${NPAC_PORT} |
|
Set server |
${NPAC_ADDR} |
${NPAC_PORT} |
||
发送字符串 |
[Arguments] |
${SEND_STRING} |
||
Send |
${SEND_STRING} |
|||
读取对端返回值 |
Read |
|||
检查返回值 |
[Arguments] |
${RECV_STRING} |
||
Recv should be |
${RECV_STRING} |
|||
读取并检查 |
[Arguments] |
${RECV_STRING} |
${COMMENT} |
|
读取对端返回值 |
||||
检查返回值 |
${RECV_STRING} |
|||
测试Call_setup(被叫挂断) |
[Arguments] |
${SEND_STRING} |
||
测试**命令 |
${SEND_STRING} |
AA BB ** ** ** ** |
测试**完成 |
|
读取并检查 |
AA BB ** ** ** ** |
测试**1 |
||
读取并检查 |
AA BB ** ** ** ** |
测试**2 |
||
读取并检查 |
AA BB ** ** ** ** |
测试**3 |