0

I want to call a keyword which should be executed prior to the start of any robot tests and that keyword should be run only once per entire project suite...

eg: Lets say there is a project suite called "ProjectSuite" which contains 4 test suite folders in it like below
testSuite1
TestSuite2
TestSuite3
And Now there is keyword to update an admin account ,I want to define that keyword in a file and make it as a global one .Also that keyword should be executed first before any of the testsuite folders(testSuite1,TestSuite2,etc) start execution.
If I pybot testSuite1 ,That keyword should be executed first
If I run TestSuite2, That keyword should be executed first and so on..
If I run ProjectSuite , Then that keyword should be executed only once and should not be run again and again for children testSuites..

For this scenario I have an idea like below
Will write up a keyword and place it in global resource folder
Then call that keyword in _init_ file under each TestSuites(TestSuite1,TestSuite2..etc)
But the Keyword runs for every suite which is not a good idea
So if any one have a better idea please let me know..

4

2 回答 2

0

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

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

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

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

于 2013-05-24T06:26:44.680 回答
0

鉴于,

你有一个套件 ProjectSuite 和子测试套件 TestSuite1 TestSuite2 TestSuite3 和一个用户关键字预测试关键字,

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

希望这就是你要找的。

于 2013-05-25T10:33:30.470 回答