Я использую Bleak для обнаружения и подключения к ближайшему устройству Bluetooth с низким энергопотреблением (BLE), и я В настоящее время пишу модульные тесты (используя pytest).
Я новичок в тестах Python и не знаю, что делать с этим патчем/макетом, чтобы заставить его работать с async
функциями.
Я не знаю, следует ли мне использовать реальную функцию или применять исправления к функциям по умолчанию, чтобы сделать тестовый исполняемый файл без ключа BLE.
Вот пример кода (улучшение discover.py ):
def list(op_sys: str) -> list:
"""list BLE devices
Returns:
list: status & list or error message
"""
import asyncio, platform
from bleak import discover
async def run() -> list:
"""discover BLE devices
Returns:
list: status & list or error message
"""
BLElist = []
try:
devices = await discover()
for d in devices:
print("'%s'" % d.name) # list devices
BLElist.append(d.name)
return 'success', BLElist
except:
return 'error', 'You don\'t have any BLE dongle.'
# linux = 3.6, windows = 3.7, need a new loop to work
if op_sys == "Windows":
asyncio.set_event_loop(asyncio.new_event_loop())
loop = asyncio.get_event_loop()
return loop.run_until_complete(run())
Мне интересно, следует ли мне переписать функцию, чтобы переместить часть run()
наружу и издеваться над ней.