在测试文件中,我模拟了property
中定义的类MyClass
的属性path.to.my.module
,如下所示:
# test file
import unittest
from app.module import run_service
class TestMyService(unittest.TestCase):
def setUp(self):
self.service_url = ...
self.query = ...
self.headers = ....
def test_my_service(self):
proc = Process(target=run_service)
proc.start()
with patch("path.to.my.module.MyClass.property", new_callable=PropertyMock) as attr:
attr.return_value = "expected_value"
res = requests.get(self.service_url, self.query, headers=self.headers)
self.assertEqual(res.status_code, 200)
proc.join()
在实际执行中,property
从外部服务X下载内容。服务的GET导入MyClass
,实例化它,并调用在第三个模块中定义的函数prs
具有类型MyClass
的参数。 prs
调用其参数的属性property
。
当我运行上面的测试文件时,回溯行进到prs
调用MyClass.property
的位置,并尝试实际执行下载。我期望MyClass.property
返回"expected_value"
。我该如何实现?