我们有一个分布式测试环境,其中robotremoteserver启动了许多其他应用程序,并在测试过程中使用它们。我试图运行的测试要求我在一个套件中运行超过一百万个测试用例。这里的问题是,当pybo
t开始运行时,它会阻塞8 GB的RAM并导致性能下降。过了一会儿它冻结了。
为了解决这个问题,我计划创建单独的套件,每套套件少于100个。但在这种情况下,我无法使用从其他套件启动的其他远程服务器中的关键字。我可以使用它的唯一方法是断开与远程服务器的连接并在每个套件中重新连接 - 这将破坏测试的目的。
我不确定是否有人遇到过这种情况。如果有人能想出这个问题的解决方案,我将不胜感激。
另一个有助于解决此问题的事情是:是否可以从另一个套件启动的库(带状态)调用关键字?
使用RIDE时,我可以使用获取库实例吗?我在一个套件中导入库,然后尝试在其他套件中获取库实例。这可能吗?
我一直收到以下错误:
AttributeError:远程实例没有属性'replace'
在套件1中,这就是我正在做的事情:
Import Library Remote ${verifix_xmlrpc_url} WITH NAME Verifix
${lib}= BuiltIn.Get Library Instance Verifix
Set Global Variable ${lib}
在套件2中:
${lib}.remove messages ${VenueNSDQ}
答案 0 :(得分:3)
我不知道有关Python的任何细节,但您可能想尝试将每个测试用例作为一个单独的过程。这将允许您在完成每个进程时恢复内存,并允许您在一台计算机上安全地运行百万个测试用例。
通常,当一个程序需要来自操作系统的更多内存时,它需要它,但它不会在它退出之前将其返回。这可能是您的流程失败的原因。
你可以旋转然后杀死的快速进程将缓解这个内存问题....然后从那里完全通过rsh在不同的机器上运行每个测试用例是一个非常短的步骤。
我希望这有点帮助。
答案 1 :(得分:0)
行。首先,我不用Python编程,我也不知道你使用的是什么类型的计算机,计算机有多少内存或者你的计算机状况。因此,这只是从编写系统程序和跨多台计算机工作中收集的一般信息。
有了这样说:如果你要运行庞大的数据集或大量的程序,你将需要对你想要做的事情进行分区,以便它适合你正在使用的系统。这是第一部分。
第二部分是如果你想跨程序与其他程序或系统交谈,那么你需要设置某种类型的通用内存使用。我知道PHP内置了这样的东西所以我不得不假设Python也有这样的东西。您设置公共内存区域,然后在各种程序之间来回发送信息。通常使用某种形式的令牌来识别每个程序和/或系统。通过这种方式,您可以进行设置,这样一旦完成一套测试,它就可以告诉下一组开始,从而不会接管或阻塞您的系统。
如果你真的很好 - 你也可以创建某种控制器程序来启动测试,观察它直到测试结束/退出,然后开始下一个测试。 (因此,除了菊花链方式之外,您还有一种主/从方式,就像客户端/服务器关系一样。)
如果您使用的是Windows Box / OS,我建议您查看AutoIt。一旦旧任务完成,AutoIt可以轻松处理观看程序运行和启动新任务。它还允许您完全控制系统和远程系统,并且开发用于帮助自动完成您正在尝试执行的任务。我发现(通过实验)AutoIt也可以用于Unix / Linux盒子,如Mac等。虽然您只能使用您发送的命令而不是访问Windows功能。
如果您对Python更熟练,可以使用它来完成上述操作 - 那么您将获得更多权力。即使你问这个已经两年了 - 我希望这可以帮助你完成你的努力。 : - )