Python 如何测试使用对象及其方法的代码?

Python 如何测试使用对象及其方法的代码?,python,unit-testing,pytest,Python,Unit Testing,Pytest,我正在尝试使用py.test对以下代码进行单元测试: 但是,如果I monkeypatch requests.session,模拟对象将没有get方法。如果我修补了requests.session.get,那么测试代码将输出另一条错误消息: > monkeypatch.setattr('requests.session.get', lambda: {}) E Failed: object <function session at 0x1046e3500>

我正在尝试使用py.test对以下代码进行单元测试:

但是,如果I monkeypatch requests.session,模拟对象将没有get方法。如果我修补了requests.session.get,那么测试代码将输出另一条错误消息:

>       monkeypatch.setattr('requests.session.get', lambda: {})
E       Failed: object <function session at 0x1046e3500> has no attribute 'get'

我应该如何测试上述代码?

您的monkeypatch会话应该返回一个带有get方法的对象,就像原来的一样。反过来,get的结果应该有一个json方法。会话函数本身没有get方法。@jonrsharpe是的,但是我应该如何创建这样的对象?这就是它的用途。或者,您也可以创建自己的类来实现所需的单个方法,然后创建monkeypatch.setattr'requests.session',lambda:ThatClass.@jornsharpe如果我使用py.test,为模拟定义一个临时类似乎是修补对象的唯一方法,对吗?你会把你的想法贴出来作为答案吗?或者再加上一些细节:P?我会接受的,我不是为你写的!在这种简单的情况下,模拟有很多选项,如果不知道如何创建,只需创建定义适当方法的对象,请参见。
>       monkeypatch.setattr('requests.session.get', lambda: {})
E       Failed: object <function session at 0x1046e3500> has no attribute 'get'