十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
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
简介:
对于Python2而言,对于一个全局变量,你的函数里如果只使用到了它的值,而没有对其赋值(指a = XXX这种写法)的话,就不需要声明global。
相反,如果你对其赋了值的话,那么你就需要声明global。
声明global的话,就表示你是在向一个全局变量赋值,而不是在向一个局部变量赋值。
若多个线程或进程同时操作这一变量可能会导致抢占资源的现象,变量不能按照预定的逻辑进行操作,这时,在改变变量前需要对变量加互斥锁,操作完成后释放互斥锁。
题外话:
GIL(Global Interpreter Lock) 全局解释器锁,导致任一时刻只能有一个线程使用解释器,当用于 IO 密集型任务时,IO 期间线程会释放解释器。
在 CPU 计算繁忙的任务重 不建议使用多线程,在非 CPU繁忙型任务中建议使用多线程。
顺便说下使用多进程的好处:完全并行,无 GIL 的限制,可充分利用多 CPU 多核的环境。
多线程使用互斥锁Demo :
除了函数内部,python的变量本身作用域就是全局的。
不同的模块互相导入时,将变量一同导入就行了,而函数内修改这些全局变量时需要先用global修饰变量名。
做一个类似配置文件的常量文件,把要全局共享的内容,作为变量声明并赋值,各模块import进来
例如一个函数内有一个变量i,怎么在函数外或另一个函数中调用或更改它。新手学习,谢谢。
==============================
不能在函数外更改某函数里的局部变量,因为每当你实例化那个函数的时候,那个函数里面的局部变量也会被重新赋值,重新定义,谈何更改呢?
这一个全部变量和局部变量的问题,如果要实现楼主说的,必须使用全局变量(类中的self):
================bianliang.py===========
#coding: utf-8
i = 0 #定义一个全局变量i
def a():
'''
打印出i的值
'''
print i
def b():
global i
a() #调用a方法
print i #打印i
i = 1000 #重新赋值i
print i #打印i
a() #再次调用a方法
b()
=================================
%python bianliang.py
1000
1000
这个py文件里面使用了一个全局变量i,实现了a方法和b方法共用参数i
定义一个py文件使用get和set方法设置和获取变量
如在gol.py中
使用时如下在gol_test1.py中:
在gol_test2.py中