用Python测试嵌入式系统的测试框架

now*_*wox 4 python testing unit-testing

我想测试嵌入式设备的功能。简而言之,我可以说它是一个由 PC 通过 C/C++ API 远程控制的人形机器人。

我非常有兴趣使用它,nosetests因为它的非样板方法。然而,我的情况有点复杂。实际测试在 C# 程序上运行,大约需要 24 小时才能完成。通过切换到 Python,我可能会节省大量开发新测试的时间。但是,在这样做之前,我正在寻找一些答案。

古老的测试套件的第一个问题是所有测试都按照预定义的顺序执行,如果发生任何错误,整个测试就会停止。我想构建不依赖于其他测试结果的独立测试套件。例如,与机器人手臂相关的测试与其中一条腿无关。然而,步行测试需要两者都成功。

晚上执行所有测试套件。如果其中一个失败,则执行下一个,依此类推。这样做的好处是,与周五晚上离开 10 分钟后所有测试都失败相比,周一早上您返回工作时可以获得更有用的结果。

所以我正在寻找一个测试框架,它允许:

  • 将测试拆分为测试套件。
  • 尝试每个测试套件,无论前一个测试套件是否失败。
  • 提供有关某些测试的依赖性的信息。

我查看了允许依赖装置的Proboscis ,但该项目看起来已经死了。

我想知道要定制鼻子才能获得这些功能需要做多少工作。也许还值得尝试另一个测试框架。我不知道,我需要一些线索......

因此,为了使事情尽可能简单,我是这样看待我的测试的:

#!/usr/bin/python

def testArms():
   ...
   pass

def testLegs():
   ...
   pass

@depend(testArms, testLegs)
def testWalk():
   ...
   pass

test_suite1 = [testLegs, testArms, testWalk]

...
Run Code Online (Sandbox Code Playgroud)

小智 5

自从问这个问题以来已经很久了。

嵌入式系统具有实现验收测试自动化的特殊特征(最重要的特征之一是,“被测设备”很可能与执行测试用例的设备不是同一设备;因此需要相同类型的交互接口) 。在对网页或 PC 应用程序进行测试自动化时,甚至在运行嵌入式软件的单元测试(也可以在设备外部执行)时,情况并非“完全”如此。基于这个假设,我认为为进行单元测试而开发的框架并不是开发用于执行验收测试的 Emedded System Test Bench 的最佳工具。

目前我们面临着类似的情况,试图选择一个开发环境来实现嵌入式设备的自动化测试。我们正在研究:

  • Robot Framework,这是一个基于关键字驱动测试方法的通用验收测试自动化框架。

  • FitNesse ( http://www.fitnesse.org )

  • 耻骨

还有其他不使用 Python 的工具。例如这个线程中描述的那些(MxVDev)