python怎么调用dll共享库

Python07

python怎么调用dll共享库,第1张

可以的,python中一般有两种方法调用DLL中的函数。1.直接使用函数名,函数名可以用dependencywalker等工具查看。(这个工具在vc或者vs的工具包中)[python]viewplaincopyimportctypesdll=CTYPES.CDLL("test.dll")res=test(3,4)2.使用Ordinal,Ordinal可以用dependencywalker等工具查看。[python]viewplaincopyimportctypesdll=CTYPES.CDLL("test.dll")res=dll[1](3,4)

使用python模块文件提供公共变量给RF使用。

RF声明使用变量文件:

变量文件声明的时候,可以使用绝对路径,也可以使用相对路径。

使用相对路径的时候,RF搜索规则和资源文件搜索规则一样:

1.先在相对当前文件的目录,匹配搜索

2.在python模块搜索路径中搜索,可以用--pythonpath参数

3.命令行参数指定变量文件: robot --variablefile abc/abc.py test\test.robot

python模块作为测试库

模块文件名作为测试库的名字

比如python模块叫MyLibrary,对应的python文件是MyLibrary.py。测试库名字就是MyLibrary。

定义在python模块文件中的函数,名称前有_前缀的不会作为关键字。

要保证其在python模块的搜索路径中,这样RF才能找到它:直接设置环境变量、用--pythonpath参数。

RF使用关键字的时候:

中间可以加上任意的空格

大小写也可以任意:returnlist、return list 、Returnl ist

注意:

1._前缀的不会作为关键字

2.导入时的参数,对应类的初始化方法

3.如果类和模块文件同名,声明的时候就可以省略后面的类名。

Variable表中声明变量

资源文件里面创建变量

和套件文件中的用户关键字一样,套件文件中的变量表里面的变量,其作用范围只是该套件文件。我们可以定义在资源文件中。资源文件变量的定义,和上述测试套件文件中几乎一样,我们只需拷贝Variables表到资源文件中即可,注意资源文件中不可存在*** Test Cases ***测试用例。

rc.robot 资源文件

test.robot 测试套件

变量文件

也可以使用python模块文件提供公共变量给RF使用。只需要直接定义变量就可以了

语法完全就是python 例如:

变量文件声明的时候,可以使用绝对路径,也可以使用相对路径。使用相对路径的时候,RF搜索变量文件规则和搜索资源文件搜索规则一样:

首先在当前文件的目录匹配收缩,如果找不到,就在Python的模块搜索路径中搜索

上面的*** Settings ***变量文件路径是这样写的 Variables ./rf/rc.py

是因为rc.py所处的路径是这样的,如下图

但是这样不好的地方是:

每个RF文件的路径不一样,导致每个RF文件导入变量文件的写法都不同,而且一旦移动了目录,就要修改里面的写法,比如

Variables ./rf/rf/rc.py

一种推荐的做法就是统一相对于项目根目录,假设项目根目录是rf,就需要像下面这样

也可以在命令行参数中直接指定变量文件,就可以不用在RF中声明了

扩展关键字

使用python测试库,模块文件名就是测试库的名字

定义在python模块中的函数,名称前有_前缀的不会作为关键字。

Python模块定义好以后,RF就可以使用它了,我们可以这样使用上面定义的测试库,要注意的是,要保证其在Python模块的搜索路径中,这样RF才能找到它

RF在使用关键字的时候,中间可以加上任意的空格,并且大小写也可以任意

自己定义关键字名字 _hehe不会作为关键字被rf使用

python类作为测试库

tlib2.py

库的搜索规则

RF搜索库完全是按照python的模块的搜索规则来的

如果python库是在一个包中,比如

pylib/login/rightpass.py

声明的时候,可以在RF文件像python导入包里面的模块那样的语法,如下

*** Settings ***

Library pylib/login/rightpasswd.py

如果导入的库中存在模块的引入,引入的模块要以加入pythonpath的路径来写否则会报错

如果存在继承的情况,只要导入子类就可使用父类的方法,要注意模块导入时的路径。

父类

子类

robot用例

总结如下:

1.在settings中声明资源文件和变量文件:

路径,目录之间的分隔符用斜杠 / 而不是点 .

2.在settings中声明测试库:

路径,目录之间的分隔符,可以用点 . 也可以用斜杠 /

路径,目录之间的分隔符用点后面不加py,用斜杠后面加.py