Python中Django单元测试问题求解
有一段如下代码是需要检查 request 的 session 的一个字段,怎样才能 mock 来修改这个字段来对这个函数进行测试?
def Loginrequired(func: object) -> object:
def checkLoginStatus(request):
if request.session.get('IsLogin', 0) == 1:
return func(request)
return HttpResponseForbidden('Please Login first')
return checkLoginStatus
Python中Django单元测试问题求解
7 回复
因为这个是用于鉴权的装饰器函数,不是直接的视图函数,所以不太能理解怎样对他写单元测试
我无法理解你的问题
写一个函数,确保函数是对的,装饰它,调用他,看装饰器的中间过程是否执行。可能是这样?单元测试嘛,就是模拟函数行为。
或者,你把返回的函数独立一下,对他做测试就行了,应为装饰器行为理论上是框架的测试保证,不是你的工作。
单元测试应避免使用复杂对象作为测试条件
所以我应该怎样去模拟?还是应该直接拆分?
拆分吧,反正你就是判断 session 中的参数值而已,只需要独立一个方法接收这个值进行判断逻辑处理,后续测试只需要对这个方法测试。
还有一个问题,假设我用一个视图类继承了 django 的 View 类,我有除了 Post,delete 以外的那些方法,
我应该怎样才能测试那些方法?还是应该把那些方法拆分到视图类意外,然后写单独的单元测试?

