运行一个包含超过一百万个testing用例的testing套件
我们有一个分布式的testing环境,robotremoteserver启动了一堆其他应用程序,并作为testing的一部分与他们一起工作。 我试图运行的testing要求我在单个套件中运行超过一百万个testing用例。 这里的问题是当pybo
t开始运行时,阻塞了8个ram,导致性能下降。 一段时间后,它冻结了。
为了解决这个问题,我计划在每个案例中创build不超过100件的独立套件。 但在这种情况下,我无法使用从其他套件启动的其他远程服务器的关键字。 我可以使用它的唯一方法是从远程服务器断开连接并在每个套件中重新连接它 – 这会破坏testing的目的。
我不确定是否有人遇到这种情况。 如果有人能想到这个问题的解决scheme,我将不胜感激。
附加信息另一件有助于解决这个问题的方法是,如果有可能从另一个套件启动的库(包含状态)中调用关键字?
使用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}
我不知道关于python的任何细节,但是你可能想要尝试的是将每个testing用例作为一个独立的进程来运行。 这将允许您在每个进程完成时从内存中恢复内存,并可能允许您在一台机器上安全地运行您的数百万个testing用例。
一般来说,当一个程序需要更多的内存从操作系统,它需要它,但它不能退还,直到它退出。 这可能是您的stream程崩溃的原因。
快速的过程,你可以旋转起来,然后杀死,将缓解这个内存问题….然后这是一个很短的步骤,从那里通过rsh在不同的机器上完全运行这些testing用例。
我希望有一点帮助。
好。 首先,我不用python编程,也不知道你正在使用什么样的计算机,计算机有多less内存或有关你的计算机的情况。 所以这只是从编写系统程序和跨多台计算机工作中收集的一般信息。
有了这个说法:如果你要运行庞大的数据集或大量的程序,你将不得不划分你想要做的事情,这将适合你正在使用的系统。 这是第一部分。 第二部分是,如果你想跨程序谈谈其他程序或系统,那么你需要设置一些types的公用内存使用情况。 我知道PHP内置了这样的东西,所以我必须假设Python也有这样的事情。 您设置公用内存区域,然后在各种程序之间来回发送信息。 通常使用某种forms的标记来标识每个程序和/或系统。 通过这种方式,您可以设置一些testing完成后,它可以告诉下一组开始,因此不会接pipe或停止您的系统。
如果你真的很好 – 你也可以创build一个控制器程序来启动一个testing,观察它直到testing结束/退出,然后开始下一个testing。 (所以,而不是菊花链方式这样做,你有这样做的主/从方式就像一个客户端/服务器的关系。)
如果你使用的是Windows / OS,我会build议你看看AutoIt。 AutoIt可以轻松处理观看程序运行并在旧任务完成后开始新的任务。 它还允许您完全控制您的系统以及远程系统,并且开发它来帮助自动执行您正在尝试执行的任务。 我发现(通过实验),AutoIt也可以用于Unix / Linux等盒子,如Mac等。 尽pipe您只能通过发送的命令而不是访问Windowsfunction。
如果你更精通Python,你可以使用它来完成上述操作 – 那么对于你来说更多的权力。 即使你问了这个问题已经两年了 – 我希望这能帮助你做出努力。 🙂