pytest应该用于集成测试嵌入式系统吗?

时间:2019-07-02 20:38:27

标签: python pytest

我正在建立我的团队的新单元测试和集成测试基础结构,并希望确保我从选择正确的测试框架开始。我是在具有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的好处是:

  1. 能够利用pytest的自动测试用例发现,因此我可以轻松地运行所有测试功能,而不必创建自定义代码。

  2. 能够利用“断言”语法为每个测试自动生成通过/失败语句,而不必为每个测试用例手动实现通过/失败打印语句

1 个答案:

答案 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提供帮助,因为我们将在此基础上实施我们的旗舰产品。