我正在建立我的团队的新单元测试和集成测试基础结构,并希望确保我从选择正确的测试框架开始。我是在具有C / C ++生产代码库的VxWorks操作系统上运行的嵌入式开发人员测试代码。
我们需要一个能够直接测试C / C ++进行单元测试的框架,因此对于我们的单元测试,我选择Googletest作为我们的框架。
但是,对于集成测试,我们通常使用Python脚本(没有测试框架)进行测试。 Python脚本通过网络连接到嵌入式系统,并通过发送命令和接收遥测来测试用例。
使用pytest作为测试框架是否会对我们当前使用Python集成测试嵌入式系统的方式有所帮助?我见过的大多数示例都通过在Python生产代码库中为单个函数创建断言来以更单元测试的方式使用pytest。
编辑: 根据hoefling的评论,我将提供一个现有的Python集成测试用例的示例(非常简化),以及我认为其对应的Pytest实现的示例。
#Current example
def test_command_counter():
preTestCmdCount = getCmdCountFromSystem()
sendCommandToSystem()
postTestCmdCount = getCmdCountFromSystem()
if (postTestCmdCount != (preTestCmdCount + 1)):
print("FAIL: Command count did not increment!")
else:
print("PASS")
#Using Pytest?
def test_command_counter():
preTestCmdCount = getCmdCountFromSystem()
sendCommandToSystem()
postTestCmdCount = getCmdCountFromSystem()
assert postTestCmdCount == (preTestCmdCount + 1)
因此,如果我错了,请纠正我,但是对于这种简化的情况,使用Pytest优于纯Python的好处是:
能够利用pytest的自动测试用例发现,因此我可以轻松地运行所有测试功能,而不必创建自定义代码。
能够利用“断言”语法为每个测试自动生成通过/失败语句,而不必为每个测试用例手动实现通过/失败打印语句
答案 0 :(得分:0)
我也遇到过类似的情况,从我那里收集的单元测试框架不适合嵌入式系统上的集成测试。这里提出了类似的问题: Test framework for testing embedded systems in Python
我们亲自使用Google的OpenHTF来自动化集成测试(如您的情况)和生产验证测试,其中包括装配调试,校准和整体验证。
签出:https://github.com/google/openhtf
我们使用Python自动化了先进的测试设备,例如RF开关和频谱分析仪,以便测试和校准工作在> 500 MHz范围内的RF单元。
使用OpenHTF,您可以非常快速地创建带有测量的完整测试。它为您提供了内置的Web GUI,并允许您编写自定义的导出“回调”。
我们目前正在为硬件测试构建完整的测试解决方案。如果愿意,我很乐意为OpenHTF提供帮助,因为我们将在此基础上实施我们的旗舰产品。