我想为我为micropython编写的micropython代码编写测试。这里的例子使用doctest。我对任何测试系统都是开放的。
工作的python示例称为testing_python.py:
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对于名为testing_micropython.py的微:位使用micropython失败的示例:
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中,但子句除外。这将使这个简单的示例工作。但是,当我开始使用micro库中的任何其他非python库函数(如Image或utime )时,doctest将再次失败。
发布于 2021-07-19 20:31:04
unittest.mock是一个用于在Python中进行测试的库。它允许您用模拟对象替换被测试系统的部分,并就如何使用它们做出断言。
这可以用于在没有硬件的情况下编写和测试嵌入式软件,如micropython。
您可以随心所欲地进行复杂操作,但要避免导入微位模块时出现错误,一个简单的方法是模拟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.由于微:位硬件内存非常有限,我将避免将任何不必要的内容加载到微:bit中,因此我建议避免进行doctest。
https://stackoverflow.com/questions/68443672
复制相似问题