如何在运行任何测试套件之前调用全局文件

时间:2013-05-23 12:18:58

标签: selenium-webdriver robotframework

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

鉴于,

你有套件ProjectSuite, 和子测试套件 TestSuite1 TestSuite2 TestSuite3 和用户关键字pre-test-keyword,

如果你想在执行任何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

希望这就是你要找的东西。