前言
本文章简单介绍一下Robot Framework自定义函数使用,以及如何使用自定义函数完成tcp协议发送
1、安装Robot Framework
参考文章
https://blog.csdn.net/ad520cc/article/details/130280980
2、自定义tcp相关协议函数
在项目文件下创建一个专门用来存放rf自定义函数的python文件,命名可以自定义,需要记住文件路径
在python文件里面自定义函数,一个python文件可以包含多个函数,可以参考如下代码,也可以自己设计。
import urllib
from time import sleep
import socket
import _thread
import threading
import json
import requests
# import urllib.request # python3中没有 urllib2 用urllib.request替代
import time
import datetime
import queue
import config
import random
from threading import Thread
from robot.libraries.BuiltIn import BuiltIn
# 全局时间同步
def appointdatetime(startDate=1):
if startDate == 1:
# 获取当前时间为开始时间
startDate = datetime.datetime.now().strftime("%Y%m%d")
date_time = startDate + str(datetime.datetime.now().strftime("%H%M%S"))
date_time = int(date_time) - 80000
return str(date_time)
# 编码加上IW和#后缀
def encode(msg):
return 'IW%s#' % msg
# json编码
def load():
# ..\\Resoource\\2.jpg
with open('shuju.json', 'r') as f:
data = json.load(f)
return data
# tcp连接建立与关闭
def connect(host ,port):
# 声明socket类型,同时生成链接对象
s = socket.socket(socket.AF_INET ,socket.SOCK_STREAM)
s.connect((host ,port))
print('连接成功')
return s
def disConnect(s):
s.close()
print('断开连接')
# http登录获取token
def httpLogin(baseUrl, deviceId, username=0, pw=0):
if username==0 and pw==0:
return ""
else:
print("登录L2手机,用来获取token")
url = 'http://' + baseUrl + 'xxxxx'
params = {"id" :username ,"pwd" :pw}
headers = {'Content-Type': 'application/json'} # 设置请求头 告诉服务器请求携带的是json格式的数据
r = requests.get(url=url, headers=headers, params=params)
logInfo = r.json()
print(logInfo['data']['token'])
return logInfo['data']['token']
# 登录设备
def login(token, deviceId):
loginMsg = encode('AP00,%s,KK,SS,1,%s' % (deviceId, token))
return loginMsg
# 发送数据到服务器
def sendToServer(s,msg):
print('sendToServer msg:',msg)
msgBuf = msg.encode('utf-8')
s.sendall(msgBuf)
# 格式化接收数据
def recv_message(s):
while True:
data = s.recv(1024).decode('utf-8').strip()
print(data)
if data == 'exit':
q.put(1)
break
# send_message(s)
s.close()
# 定义有返回值的数据类型
def main1(baseUrl, miaoshu, *args):
client = connect(baseUrl, 18199)
for i in args:
try:
sendToServer(client, i)
message = client.recv(1024).decode('utf-8').strip()
print("msg=" + message)
sleep(miaoshu)
except Exception as e:
print(e)
# 定义无返回值的数据类型
def main2(baseUrl, miaoshu, *args):
client = connect(baseUrl, 18199)
for i in args:
try:
sendToServer(client, i)
sleep(miaoshu)
except Exception as e:
print(e)
if __name__ == '__main__':
main1()
3、新建“公共元素”文件
(1)打开RF,在文件夹点击鼠标右键-》New Resource,新建"公共元素"文件
(2)点击"公共元素"文件,配置Library
(3)选择对应路径的python文件
{4}在resource文件下新建keyword
(5)可直接引用python文件中定义的函数
(6)同理将其他的函数也按照这个格式创建
4、新建测试用例
(1)在同一个目录下点击鼠标右键-》New Suite
(2)新建成功之后导入刚才创建的公共元素resource
(3)创建测试用例,右键点击New Test Case
(4)最后引用公共元素中的定义即可,格式类似如下