【问题标题】:Running test cases for C program in run time via python [closed]通过python在运行时运行C程序的测试用例[关闭]
【发布时间】:2014-08-27 12:12:13
【问题描述】:

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

【问题讨论】:

  • Stack Overflow 不是代码编写服务。请证明您已尝试过什么以及它是如何不起作用的(c.f. How to ask)。您可能想edit您的问题以添加更多信息。
  • 您可以为此目的使用 shell 脚本,并且您可以生成该 shell 脚本(例如,使用 autogen...)

标签: python c++ c unit-testing testing


【解决方案1】:

您可以采取以下方法:

第 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>

希望这会有所帮助。

【讨论】:

  • 那太棒了!我找到了一种使用重定向运算符(例如“filename” output.txt)来做我想做的事情的方法。唯一的问题是,为如此大量的程序和测试用例运行这段代码非常忙碌。
猜你喜欢
  • 1970-01-01
  • 2019-12-18
  • 2013-02-10
  • 1970-01-01
  • 1970-01-01
  • 2016-02-07
  • 1970-01-01
  • 2020-06-26
  • 2016-11-24
相关资源
最近更新 更多