Saya menggunakan Bleak untuk menemukan & menghubungkan ke perangkat Bluetooth Low Energy (BLE) terdekat, dan saya Saya sedang menulis unit test (menggunakan pytest).
Saya baru mengenal tes Python dan saya tidak tahu apa yang harus dilakukan dengan patch/mock ini agar berfungsi pada fungsi async
.
Saya tidak tahu apakah saya harus menggunakan fungsi sebenarnya, atau menerapkan tambalan pada fungsi default agar pengujian dapat dijalankan tanpa dongle BLE.
Berikut ini contoh kode (perbaikan dari 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())
Saya bertanya-tanya apakah saya harus menulis ulang fungsi untuk memindahkan bagian run()
ke luar, dan mengejeknya.