Robot Framework 使用变量文件

资源文件里面提供了一些公共使用的变量,实际上也可以使用 python 模块文件提供公共变量给 RF 使用,只需要直接定义变量就可以了,语法完全是 python

在工程里面直接创建一个 Python Filecfg.pycfg 里面把 rc.robot 变量直接拿过去用

MgrLoginUrl = 'http://localhost/mgr/login/login.html'
adminuser = {"name":"auto","pw":"sdfsdfsdf"}

变量名去掉 @&{} 然后变量值用引号引起来。完全是 python 的写法,我们写完了怎么给 Robot 的测试用例来使用呢?在资源文件的 Settings 表里面定义一个变量,这个变量就叫 Variables cfg.py,现在我们可以把资源文件里面的 *** Variables *** 去掉,使用 cfg.py

Robot Framework 使用变量文件_第1张图片
image.png

执行可以看到没有任何问题。


Robot Framework 使用变量文件_第2张图片
image.png

刚刚我们是把 cfg.py、t1.robot、rc.robot 都放在一个路径下面。我们在变量声明的时候可以使用相对路径也可以使用绝对路径。当我们使用相对路径的话 robot 搜索变量的文件 cfg.py 的规则跟搜索资源文件是一样的。首先它也是在当前的文件目录下去找,比如我们当前是在t1.robot这个路径,那就是在tmp rf 路径下去找,它去找cfg.py一下就找到了。如果找不掉 他就会去 python 的模块搜索路径中去找,比如说我换了个路径,把 cfg.py 移到一个新建的 Python package 包名为 cfg 里面。

Robot Framework 使用变量文件_第3张图片
image.png

基于当前 t1.robot 所在的路径去找cfg.py 就找不到了,它基于当前的路径就是 tmp rf 下面,那我想找到cfg.py 是不是要先进入到当前路径的cfg路径下面去找。这个时候应该这么写 Variables cfg/cfg.py ,注意 资源文件路径,目录之间的分割符,不用 点.而是用 斜杠/

如果有的 RF 不在项目根目录下面,比如新建目录tc,把我的 t1.robot、rc.robot 都挪到 tc 下面。

Robot Framework 使用变量文件_第4张图片
image.png

那我执行 t1.robot 的时候是不是在 tmp rftc 下面去执行。那我们在想找到 cfg.py 该怎么找?当前目录是 tmp rf 下面的 tc ,那我想找到上面 cfg 下面的cfg.py 应该这样写。

当前目录往上一级的下一级,当前目录点点 ·· 往上一级的 cfg 下面的 cfg.py

Variables  ../cfg/cfg.py

我们可以这样修改。

假如我又要改了,tc 下面新建了tc1 然后把 t1.robot、rc.robot 都拉进去,再想去找的话是不是还得在往上一层就这样了。

Variables  ../../cfg/cfg.py

所以一旦目录改了之后,我这个变量表的路径就每次都要改,这样就比较麻烦了。所以碰到这种问题,有没有一个比较好的办法不用每次改。这里有个推荐的做法就是:统一都相对于项目的根目录来写,比如说我们这个项目的根目录是 tmp 下面的 rf

image.png

所有的路径都是从 tmp rf 开始找,不管它有多少层里面不管怎么挪,我基于tmp rf 这个 cfg.py 在哪,就在 cfg 下面的 cfg.py,就这样写

Variables  cfg/cfg.py

所以不管 t1.robot 有多少层,不管它有多深,我基于当前目录都是从 cfg 开始,写到 cfg 下面的 cfg.py 。这样做是可以的,但是我们在执行的时候只能根据 python 的模块搜索路径了,如果相对当前文件因为你找不到了。

  • 这样我们需要将当前目录加入到模块搜索路径中。
robot --pythonpath . tc\t1.robot
  • 也可以在命令行参数中指定(了解即可)
    我们也可以在命令行参数中直接指定变量文件。就可以不用在RF文件中声明了(很少使用)
robot --variablefile cfg\cfg.py tc\t1.robot

你可能感兴趣的:(Robot Framework 使用变量文件)