RobotFrameWork导入自定义的模块
产生原因:
由于测试流程会使用python 调用C接口,所以将C接口使用了一层封装,需要将C接口转化为python接口,且可以被RF使用
执行步骤如下:
参考链接:https://zhuanlan.zhihu.com/p/108924718
1.创建一个目录为RmSDK
2.py文件为:libRunner.py
(这里注意py文件和类名需要保持一致,可以不区分大小写)
#因为是windows调试库,所以内容我都删了
import os
from ctypes import *
from enum import Enum, unique
class LibRunner(object):
__lib = ""
__soundio = None
def __init__(self):
"""加载测试库"""
pass
def RM_SDK_Global_Initialize(self,filepath):
"""调用初始化接口"""
return filepath
3)创建__init__.py在RmSDK目录下
#-*- coding: utf-8 -*-
from libRunner import LibRunner
class RmSDK(LibRunner):
ROBOT_LIBRARY_SCOPE = 'GLOBAL'
在RF中导入
我的误区:
实际:
需要将库目录放到python\Lib\site-packages\目录下,然后直接导入包名字
然后调用了里面函数:
run一下试下,发现找不到模块名
emmm…决定写个python小脚本验证下,就在__init__.py中加入了一个main`
#-*- coding: utf-8 -*-
from libRunner import LibRunner
class RmSDK(LibRunner):
ROBOT_LIBRARY_SCOPE = 'GLOBAL'
if __name__ == '__main__':
result = LibRunner().RM_SDK_Global_Initialize("test")
print(result)`
调试__init__.py执行通过
证明是RF无法找到这个模块…
所以划重点了:
1.RF时候发现找包的路径没有RmSDK 这一个层级,so,修改init
#-*- coding: utf-8 -*-
from RmSDK.libRunner import LibRunner
class RmSDK(LibRunner):
ROBOT_LIBRARY_SCOPE = 'GLOBAL'
#这里加上了RmSDK路径!rf搜索路径才有~~但是车过去执行了一下init…emmm …
把文件目录加入环境变量后解决
sys.path.append(os.path.dirname(file))
以上是windows添加路径的方法
linux 添加搜索目录的方式:
1)sys.path
查看path的路径,在这里有的目录都可以用,随便选其中一个目录,创建个文件 “xxx.pth”,然后把你存放三方库的路径放进去
# cd /mnt/python/python35/lib/python3.5/site-packages
# touch 3dparty.pth
# vi 3dparty.pth
/mnt/python/src/demo
#这是三方库的路径是在这个目录下的,在/demo下的目录RmSDK中
测试一下RF