当不使用rpi或单元测试时,有一堆假接口用于开发

fake-rpi的Python项目详细描述


https://raw.githubusercontent.com/MomsFriendlyRobotCompany/fake_rpi/master/pics/pi-python.jpg

假覆盆子皮

Latest VersionLicenseTravis-ciPython Versions

为什么??

我在PowerBook上做了很多开发,我厌倦了不断地创建 我的笔记本电脑上的dev和travis.ci上的测试的假接口。

  • 2017年4月2日:beta质量
  • 2017年4月8日:初始python3支持…这是一个痛苦

那么,这是否模拟了覆盆子皮上的一切?不!现在它模拟 我用的和需要的。随着时间的推移,还会有更多的人加入。我们也欢迎您 提交对我尚未添加的内容的请求。

AdafruitLSM303(accelerometer)
GPIOgpio pins
picameracamera
RPiPWM
smbusi2c
serialnot done yet

安装

安装的首选方法是:

pip install fake_rpi

发展

提交请求并进行开发:

git clone
cd fake_rpi
pip install -e .

使用量

要伪造rpi.gpiosmbus,必须在应用程序之前执行以下代码:

# Replace libraries by fake onesimportsysimportfake_rpisys.modules['RPi']=fake_rpi.RPi# Fake RPi (GPIO)sys.modules['smbus']=fake_rpi.smbus# Fake smbus (I2C)

然后您可以在应用程序中保留常用的导入:

importRPi.GPIOasGPIOimportsmbusGPIO.setmode(io.BCM)# now use the fake GPIOb=GPIO.input(21)sm=smbus.SMBus(1)# now use the fake smbusb=sm.read_byte_data(0x21,0x32)# read in a byte

打开/关闭假呼叫记录:

fromfake_rpiimporttoggle_print# by default it prints everything to std.errortoggle_print(False)# turn on/off printing

但是我需要smbus来返回单元测试的特定字节!好,然后创建我的smbus的子级,如下所示 只修改需要更改的方法:

fromfake_rpiimportsmbusfromfake_rpiimportprintfclassMyBus(smbus.SMBus):@printfdefread_byte_data(self,i2c_addr,register):ret=0xffifi2c_addr==0x21:ret=0x55elifi2c_addr==0x25:ret=0x11returnretsm=MyBus()b=sm.read_byte_data(0x21,0x32)# read in a byte

打印打开或关闭

以下是打印完成后gitrepo中example.py的输出 打开或关闭:

kevin@Logan fake_rpi $ ./example.py
<<< WARNING: using fake raspberry pi interfaces >>>
kevin@Logan fake_rpi $ ./example.py
<<< WARNING: using fake raspberry pi interfaces >>>
fake_rpi.RPi.PWM.__init__()
fake_rpi.RPi.PWM.start(5,)
fake_rpi.smbus.SMBus.__init__(1,)
fake_rpi.smbus.SMBus.write_byte_data(1, 2, 3)
fake_rpi.smbus.SMBus.read_byte_data(1, 2): 21
fake_rpi.smbus.SMBus.close()
__main__.MyBus.__init__()
__main__.MyBus.read_byte_data(1, 2): 72
__main__.MyBus.read_i2c_block_data(1, 2, 3): [90, 90, 90]

更改日志

2019-03-290.6.1bug fix with randint range
2017-11-300.6.0bug fix with printing
2017-10-230.5.3bug fix with randint
2017-09-050.5.1flushing out interfaces
2017-07-070.3.0fixed bugs, print statement, and reduced dups
2017-04-080.1.0initial python3 setup and support
2017-04-020.0.2pushed to pypi with landscape.io fixes
2017-04-010.0.1created

麻省理工学院执照

版权所有(c)2017 Kevin J.Walchko

兹免费准许任何人取得 本软件和相关文档文件(“软件”),用于处理 不受限制的软件,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或销售副本 以及允许向其提供软件的人员 因此,必须满足以下条件:

上述版权公告及本许可公告须包括在 软件的拷贝或大部分。

本软件按“原样”提供,无任何形式的保证,明示或 默示的,包括但不限于适销性、适用性的保证 为了特殊目的和不侵权。在任何情况下,作者或 版权持有人应对任何索赔、损害或其他责任负责,无论 在合同诉讼、侵权诉讼或其他诉讼中,由 与软件的连接或软件的使用或其他交易。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JPA中的java按对象属性查找   java SetOnKeyListener不使用gridview   java“无法构建实体管理器工厂”在运行用Maven编译的jar文件时出现Hibernate异常   java缓存webclient创建是个好主意吗   java如何显示回文?   使用Java写入txt文件时是否有行限制?   Java的重写无法正确重写函数   使用Java用uu RequestVerificationToken填写HTML表单   java Bukkit插件:如何使用命令停止计时器   processbuilder正在尝试运行。使用java在另一个目录中创建bat文件   java Android编程发送数据   java从文本文件中读取每行不同数据类型   函数java中是否有“dofor”循环?   在选择框中列出所有可用系统字体的java   JMS侦听器中异常时java JMS消息的重新传递   Java通用比较器   java简单DAO使用Hibernate和Spring框架,不起作用:无法找到XML架构命名空间的Spring NamespaceHandler   在Java中向抽象基类添加成员对部署的影响   gwt如何在Java中比较两个相同对象的数据