首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为micropython编写测试

如何为micropython编写测试
EN

Stack Overflow用户
提问于 2021-07-19 16:05:47
回答 1查看 773关注 1票数 3

我想为我为micropython编写的micropython代码编写测试。这里的例子使用doctest。我对任何测试系统都是开放的。

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

代码语言:javascript
复制
def sum(a, b):
    '''
    >>> sum(3, 0)
    3
    '''
    return a + b

print(sum(2,2))

当我使用以下方法测试时:

代码语言:javascript
复制
python -m doctest -v testing_python.py 

我得到:

代码语言:javascript
复制
4
Trying:
    sum(3, 0)
Expecting:
    3
ok

对于名为testing_micropython.py的微:位使用micropython失败的示例:

代码语言:javascript
复制
from microbit import *

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

print(sum(2,2))

当我使用以下方法测试时:

代码语言:javascript
复制
python -m doctest -v testing_micropython.py 

我得到了

代码语言:javascript
复制
Traceback (most recent call last):
...
ModuleNotFoundError: No module named 'microbit'

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-19 20:31:04

unittest.mock是一个用于在Python中进行测试的库。它允许您用模拟对象替换被测试系统的部分,并就如何使用它们做出断言。

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

您可以随心所欲地进行复杂操作,但要避免导入微位模块时出现错误,一个简单的方法是模拟microbit模块。例如,有以下档案:

代码语言:javascript
复制
|- testing_micropython.py
|- microbit
  |- __init__.py

我的testing_micropython.py有:

代码语言:javascript
复制
from microbit import *


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

display.show(sum(2,2))

microbit/__init__.py有:

代码语言:javascript
复制
from unittest.mock import MagicMock

display = MagicMock()

它提供了以下输出:

代码语言:javascript
复制
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。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68443672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档