【问题标题】:How to call a global file before running any test suite如何在运行任何测试套件之前调用全局文件
【发布时间】:2013-05-18 19:16:44
【问题描述】:

我想调用一个应该在任何机器人测试开始之前执行的关键字,并且该关键字应该在整个项目套件中只运行一次...

例如:假设有一个名为“ProjectSuite”的项目套件,其中包含 4 个测试套件文件夹,如下所示
测试套件1
测试套件2
测试套件3
现在有关键字来更新管理员帐户,我想在文件中定义该关键字并将其设为全局关键字。此外,该关键字应在任何测试套件文件夹(testSuite1、TestSuite2 等)开始执行之前先执行.
如果我 pybot testSuite1 ,应该先执行那个关键字
如果我运行 TestSuite2,则应首先执行该关键字,依此类推..
如果我运行 ProjectSuite ,那么该关键字应该只执行一次,并且不应该为孩子 testSuite 一次又一次地运行..

对于这种情况,我有如下想法
将编写一个关键字并将其放在全局资源文件夹中
然后在每个 TestSuites(TestSuite1,TestSuite2..etc)
下的 _init_ 文件中调用该关键字 但是关键字适用于每个套件,这不是一个好主意
所以如果有人有更好的想法,请告诉我..

【问题讨论】:

    标签: selenium-webdriver robotframework


    【解决方案1】:

    给定,

    你有一个套件 ProjectSuite , 和子测试套件 测试套件1 测试套件2 测试套件3 和一个用户关键字预测试关键字,

    如果您想在执行任何 TestSuite1 或 TestSuite2 或 TestSuite3 之前执行“pre-test-keyword”,

    那么理想的解决方案是在 ProjectSuite 的定义中使用“Suite Setup”标签定义“pre-test-keyword”。 如果 ProjectSuite 是一个目录,这可以在“测试套件初始化文件”中完成

    这种方式“pre-test-keyword”将在任何 TestSuite1 或 TestSuite2 或 TestSuite3 之前执行。

    详细信息在此链接中 http://robotframework.googlecode.com/hg/doc/userguide/RobotFrameworkUserGuide.html?r=2.6.2#suite-setup-and-teardown

    希望这就是您想要的。

    【讨论】:

      【解决方案2】:

      对此我可以想到三种方法。第一种方法正是您所描述的。不要直接运行关键字,而是创建一个用户关键字来测试全局级别变量的存在(您选择的是名称,但原则是 C #IFDEF 的名称),然后如果未定义,则运行关键字并设置变量,否则什么也不做。

      第二个:将一个全局变量添加到包含最初为 True 的关键字的 python 文件中,在运行关键字时测试该变量,如果设置为 False,则不执行任何操作。如果设置为 True,则运行关键字的功能,然后将其设置为 False。这意味着虽然每个测试用例都会调用关键字,但它只会在第一次运行时执行任何操作。

      第三种方法是不实际使用关键字,而是使用测试套件之外的脚本,它运行关键字的功能,然后运行测试。

      您使用哪一个取决于您的关键字是什么以及为什么要运行它,更多信息将有助于确定提供什么建议。第一个将准确记录正在发生的事情,第二个在您的测试日志中留下更少的杂物,但会降低可见性。第三个完全消除了可见性;然而,我在我的测试中使用第三个来更改为 python virtualenv,安装依赖项,并在运行我的测试之前启动一个日志代理,然后关闭所述代理。第二个我用于测试库的第一次初始化的一部分,以便对大型数据集执行冗长的计算,其结果是不可变的,然后由该库的每个实例使用。第一个我没有找到用处,但后来我的测试不是你的测试。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-24
        • 1970-01-01
        • 2013-12-04
        • 2019-11-05
        • 1970-01-01
        相关资源
        最近更新 更多