Скажем, у вас есть такая функция:
@ray.remote
def remote_function():
return 1
Возможно, вы можете протестировать ее следующим образом:
def test_remote_function():
ray.init()
x=ray.get(remote_function.remote())
assert x==1
Но это означает, что инициализация луча фактически не нужна (я просто хочу проверить саму функцию). В моем случае он даже не должен быть asyn c или с резьбой.
То, что я делаю, atm - это доступ к его защищенной функции:
def test_remote_function():
assert remote_function._function() == 1
, но это кажется хакерским и Линтер не слушается меня за это:)
Мне бы хотелось, чтобы прибор Pytest был таким:
def test_remote_function(ray):
x=ray.get(remote_function.remote())
assert x==1
или
def test_remote_function(ray_sync):
x=ray.get(remote_function.remote())
assert x==1
, чтобы явно сделать его синхронизированным c (на самом деле не использовать ray).
Я видел, что во внутренних тестах ray есть какие-то приспособления для pytest, но, я думаю, они не выставлены.
Кто-нибудь знает лучший способ?