通过python在运行时运行C程序的测试用例

通过python在运行时运行C程序的测试用例,python,c++,c,unit-testing,testing,Python,C++,C,Unit Testing,Testing,我正在用python编写一个程序,其中打开、编译并运行一个c程序的.c文件。我有很多程序的测试用例,每次运行程序时都需要手动检查。现在大约有15到16个C程序,它们总共有大约100个测试用例。那么,我应该如何编写python程序,以便在使用python运行C程序后,它将自动加载每个测试用例并将其输出定向到指定的文件?您可以采用以下方法: 步骤1:将所有C程序的名称及其对应的测试用例存储在python程序的数组中 步骤2:迭代C程序数组,每次迭代都迭代该C程序的测试用例数组。在这个内部迭代中,使用

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

您可以采用以下方法:

步骤1:将所有C程序的名称及其对应的测试用例存储在python程序的数组中

步骤2:迭代C程序数组,每次迭代都迭代该C程序的测试用例数组。在这个内部迭代中,使用Popen实用程序为C程序启动一个测试用例。例如,C程序是“app”,测试用例是“tc”,请使用以下命令

tcProcess = subprocess.Popen( ['app','tc']) # assuming tc is going as an argument to app
步骤4:现在使用wait()实用程序等待进程完成。检查返回代码并按照您的要求进行操作。如果您没有为失败的过程选择中止,那么在下一次迭代中,程序将选择下一个测试用例并重复相同的过程

return_code = tcProcess.wait ()
您也可以在子流程上使用call()方法代替Popen,它会自动等待调用完成,而不需要wait()

子流程及其方法的说明可在此处找到

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


希望这有帮助。

堆栈溢出不是一种代码编写服务。请证明您尝试了什么以及它是如何不起作用的(c.f.)。您可能希望添加更多信息来回答您的问题。您可以使用一个shell脚本来实现此目的,并且您可以生成一个很棒的shell脚本(例如,使用
autogen
…)!我找到了一种使用重定向操作符(如“filename”output.txt)实现我想要的功能的方法。唯一的问题是,为如此大量的程序和测试用例运行这些代码是一件非常繁忙的事情。