gpt4 book ai didi

python - 如何使用 dbus 为函数编写单元测试以从 Spotify 获取信息?

转载 作者:太空宇宙 更新时间:2023-11-04 11:58:35 25 4
gpt4 key购买 nike

我有这个功能

def get_info_linux():
import dbus

session_bus = dbus.SessionBus()
spotify_bus = session_bus.get_object("org.mpris.MediaPlayer2.spotify",
"/org/mpris/MediaPlayer2")
spotify_properties = dbus.Interface(spotify_bus,
"org.freedesktop.DBus.Properties")
metadata = spotify_properties.Get("org.mpris.MediaPlayer2.Player", "Metadata")
track = str(metadata['xesam:title'])
artist = str(metadata['xesam:artist'][0])
return artist, track

这使用 dbus 从 spotify 获取信息。如何为其编写单元测试?

最佳答案

测试这种 D-Bus 服务客户端的最常见方法是针对伪造的 D-Bus session 总线运行它,该总线上运行着 Spotify 服务的模拟实现(由您的测试代码控制)。

您可以使用 GTestDBus创建模拟 session 总线,然后使用普通的 GDBus API 在其上公开 D-Bus 对象。创建连接到 g_test_dbus_get_bus_address() 返回的地址的 Gio.DBusConnection ,然后在 D-Bus 对象路径 /org/mpris/MediaPlayer2 上公开一个对象,至少实现 org.freedesktop.DBus.Properties 属性,并返回模拟您的被测代码查询的属性的数据。

当在测试工具下运行时,您的被测代码应该使用模拟 session 总线,因为 GTestDBus 覆盖了 GIO 使用(默认)的 DBUS_SESSION_BUS_ADDRESS 环境变量查找真实 session 总线的地址。

关于python - 如何使用 dbus 为函数编写单元测试以从 Spotify 获取信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53362582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com