2014-08-27 56 views
1

我正在开发,编译和运行一个用于C程序的.c文件的python程序。每次运行程序时,我都需要手动检查该程序的许多测试用例。现在大约有15到16个C程序,它们大约有100个测试用例组合在一起。那么我应该如何编写python程序,以便在使用python运行C程序之后,它会自动加载每个测试用例并将其输出指向一个指定的文件?在运行时通过python运行C程序的测试用例

+0

**堆栈溢出不是代码写入服务**。请说明你已经尝试了什么,以及它如何工作(c.f. [如何提问](https://stackoverflow.com/help/how-to-ask))。您可能想要[编辑]您的问题以添加更多信息。 – hlt 2014-08-27 12:14:54

+0

你可以使用一个shell脚本来达到这个目的,并且你可以生成这个shell脚本(例如使用'autogen' ...) – 2014-08-27 13:07:40

回答

1

您可以采取以下方法:

第1步:让存储在阵列中的一个python程序中的所有C程序的名称及其相应的测试用例。

第2步:遍历C程序数组,迭代遍历C程序的测试用例数组。在这个内部迭代中,使用Popen实用程序为C程序启动一个测试用例。因此,例如,C程序是“应用”和测试用例是“TC”使用下面的

tcProcess = subprocess.Popen(['app','tc']) # assuming tc is going as an argument to app 

步骤4:现在等待过程中使用的等待()实用程序来完成。检查退货代码并按照您的要求继续。如果你不选择放弃失败的过程,那么在接下来的迭代程序将拿起一个测试案例,并重复同样的过程

return_code = tcProcess.wait() 

相反POPEN的你也可以使用()调用的子方法并且它会自动等待电话结束,并且不需要等待()。子及其方法的

说明可以在这里找到

<https://docs.python.org/2/library/subprocess.html#using-the-subprocess-module> 

希望这有助于。

+0

这真是太棒了!我发现了一种方法来使用重定向操作符来完成我想要的操作,例如“filename” output.txt。唯一的问题是,为如此大量的程序和测试用例运行这些代码是一件忙碌的事情。 – Pranjal 2014-08-27 13:18:43