gpt4 book ai didi

micropython - 如何为 micropython 编写测试

转载 作者:行者123 更新时间:2023-12-05 01:58:38 24 4
gpt4 key购买 nike

我想为我为 micro:bit 编写的 micropython 代码编写测试。这里的示例使用 doctest。我愿意为任何测试系统解决问题。

名为 testing_python.py 的工作 python 示例:

def sum(a, b):
'''
>>> sum(3, 0)
3
'''
return a + b

print(sum(2,2))

当我测试使用时:

python -m doctest -v testing_python.py 

我得到:

4
Trying:
sum(3, 0)
Expecting:
3
ok

为 micro:bit 使用 micropython 的失败示例称为 testing_micropython.py:

from microbit import *

def sum(a, b):
'''
>>> sum(3, 0)
3
'''
return a + b

print(sum(2,2))

当我测试使用时:

python -m doctest -v testing_micropython.py 

我明白了

Traceback (most recent call last):
...
ModuleNotFoundError: No module named 'microbit'

我尝试将“import microbit”语句包装在 try,except 子句中。这将使这个简单的示例工作。但是,当我开始使用在 micro:bit 库中找到的任何其他非 Python 库函数(例如 Image 或 utime)时,doctest 将再次失败。

最佳答案

unittest.mock 是一个用于 Python 测试的库。它允许您用模拟对象替换被测系统的某些部分,并对它们的使用方式做出断言。

这可用于在没有硬件的情况下编写和测试 micropython 等嵌入式软件。

您可以随心所欲地复杂化,但是在导入 microbit 模块时不出错的一个简单方法是模拟 microbit 模块。例如有以下文件:

|- testing_micropython.py
|- microbit
|- __init__.py

我的 testing_micropython.py 有:

from microbit import *


def sum(a, b):
"""
>>> sum(3, 0)
3
"""
return a + b

display.show(sum(2,2))

microbit/__init__.py 有:

from unittest.mock import MagicMock

display = MagicMock()

给出以下输出:

python -m doctest -v testing_micropython.py
Trying:
sum(3, 0)
Expecting:
3
ok
1 items had no tests:
testing_micropython
1 items passed all tests:
1 tests in testing_micropython.sum
1 tests in 2 items.
1 passed and 0 failed.
Test passed.

由于 micro:bit 硬件的内存非常有限,我会避免在将加载到 micro:bit 的文件中放置任何不必要的内容,因此我建议避免使用 doctest。

关于micropython - 如何为 micropython 编写测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68443672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com