Dav*_*man 20 python testing integration-testing vcr
我想使用Ruby的VCR库或Betamax的令人敬畏的"记录/回放"机制用于JVM.是否有一个Python库以相同的方式工作?如果没有,您如何测试您的REST客户端调用,而不必担心测试缓慢和片状?
其他答案中都建议了betamax和VCR.py。我想指出一个差异,它可能决定您可以使用哪一个。
Betamax 希望您在设置测试时传递预先创建的requests.Session对象。这意味着会话对象必须源自测试内部,而不是来自被测代码。从文档中:
with Betamax(self.session) as vcr:
vcr.use_cassette('user')
resp = self.session.get('https://api.github.com/user',
auth=('user', 'pass'))
assert resp.json()['login'] is not None
Run Code Online (Sandbox Code Playgroud)
就我而言,会话对象是在我需要测试的代码内创建的。在这种情况下,betamax 就毫无疑问了。
另一方面,VCR.py 在较低级别修补 Python 的 HTTP 堆栈,因此效果完美:
import requests
import vcr
def my_func():
session = requests.Session()
response = session.get('https://stackoverflow.com/')
print(response.text[:200])
def test_my_func():
with vcr.use_cassette('/tmp/cassette.yaml'):
my_func()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2283 次 |
| 最近记录: |