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

Selenium webdriver 如何在运行任何测试套件之前调用全局文件,selenium-webdriver,robotframework,Selenium Webdriver,Robotframework,我想调用一个关键字,该关键字应该在任何机器人测试开始之前执行,并且该关键字应该在整个项目套件中只运行一次 例如:假设有一个名为“ProjectSuite”的项目套件,其中包含4个测试套件文件夹,如下所示 testSuite1 TestSuite2 TestSuite3 现在有了更新管理员帐户的关键字,我想在一个文件中定义该关键字,并使其成为一个全局关键字。另外,在任何testsuite文件夹(testSuite1、TestSuite2等)开始执行之前,应该先执行该关键字 如果我是pybot te

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

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

对于这种情况,我有如下想法
将写入关键字并将其放入全局资源文件夹
然后在每个测试套件(TestSuite1、TestSuite2..等)下的
\u init\u
文件中调用该关键字
但是关键字适用于每个套件,这不是一个好主意

因此,如果有人有更好的想法,请告诉我。

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

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

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

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

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

如果您想在执行任何TestSuite1、TestSuite2或TestSuite3之前执行“预测试关键字”

理想的解决方案是在ProjectSuite的定义中使用“套件设置”标记定义“预测试关键字”。 如果ProjectSuite是一个目录,这可以在“测试套件初始化文件”中完成

这样,“预测试关键字”将在任何TestSuite1、TestSuite2或TestSuite3之前执行

详情请参阅此链接

希望这就是你想要的