【问题标题】:How to use extra arguments passed with Variable file - Robot framework如何使用通过变量文件传递的额外参数 - 机器人框架
【发布时间】:2016-07-30 23:12:36
【问题描述】:

在 Robot Framework 用户指南中有一个部分描述了如何传递变量文件以及一些可能的变量(如果需要)。
示例:
pybot --variablefile taking_arguments.py:arg1:arg2

我的问题是我可以在之后的 take_arguments.py 文件中使用这些可能的变量 arg1 和 arg2 吗?如果可以的话,我该怎么做?

现在我有这个:

pybot --variablefile taking_arguments.py:arg1:arg2

taking_arguments.py 内容:

IP_PREFIX = arg1

但这会导致

NameError: name 'arg1' is not defined

【问题讨论】:

    标签: python robotframework


    【解决方案1】:

    使用--variablefile filename.py:arg1:arg2 语法在参数文件中使用变量的唯一方法是让您的变量文件实现函数get_variables。此函数将传递您在命令行中指定的参数,并且必须返回变量名称和值的字典。

    例如,考虑以下名为“variables.py”的变量文件:

    def get_variables(arg1, arg2):
        variables = {"argument 1": arg1,
                     "argument 2": arg2,
                    }
        return variables
    

    此文件创建两个机器人变量,名为 ${argument 1} 和 ${argument 2}。这些变量的值将是传入的参数的值。您可以像这样使用这个变量文件:

    pybot --variablefile variables.py:one:two ...
    

    在这种情况下,字符串“one”和“two”将作为两个参数传递给get_variables。然后这些将与两个变量相关联,从而将${argument 1} 设置为one,将${argument 2} 设置为two。

    【讨论】:

    • 当我尝试上面的例子时收到TypeError: get_variables() takes exactly 2 arguments (0 given)。这是我的设置:一个带有open browser 和这两个参数${argument 1} 和${argument 2} 的机器人文件我也在Settings 中调用.py 文件我的命令行执行看起来像这样pybot -v variables.py:username:password file.robot 我正在尝试使用此方法通过命令行将用户名和密码传递给表单,但没有运气。
    • @Freddy 您可能使用了错误的参数。您应该使用小写的-v 来定义单个变量。对于变量文件,使用大写的-V 或--variablefile
    • @sjudǝʊ 感谢您的澄清。事实上,我传递了错误的标志。使用 -V 按预期工作。我仍然在日志中收到以下错误Error in file '.../_robot/file.robot': Processing variable file '.../_robot/variables.py' failed: TypeError: get_variables() takes exactly 2 arguments (0 given),但是,该过程有效。不确定日志中的错误是否只是 RF 无法处理的问题。
    【解决方案2】:

    我没有尝试将初始值传递给变量文件中的变量...所以我不确定这是否可能...

    我可以提供替代方案...

    您可以在 pybot 命令中手动定义一些变量及其值...

    pybot -variablefile taking_arguments.py -v IP_PREFIX:arg1 -v Varibale:Value 
    

    如果我没记错的话,这些手动启动的变量比变量文件中的优先级更高。所以即使它们是在变量文件中启动的,通过 -v 选项传递的值也会在测试用例中使用。

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      • 2021-04-29
      • 2019-07-25
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 2020-08-30
      相关资源
      最近更新 更多