有一段如下代码是需要检查 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
1
ray1888 OP 因为这个是用于鉴权的装饰器函数,不是直接的视图函数,所以不太能理解怎样对他写单元测试
|
2
jswh 2018-08-06 16:30:37 +08:00
写一个函数,确保函数是对的,装饰它,调用他,看装饰器的中间过程是否执行。可能是这样?单元测试嘛,就是模拟函数行为。
或者,你把返回的函数独立一下,对他做测试就行了,应为装饰器行为理论上是框架的测试保证,不是你的工作。 |
3
xrlin 2018-08-06 16:35:46 +08:00
单元测试应避免使用复杂对象作为测试条件
|
5
xrlin 2018-08-06 17:02:34 +08:00
@ray1888 拆分吧,反正你就是判断 session 中的参数值而已,只需要独立一个方法接收这个值进行判断逻辑处理,后续测试只需要对这个方法测试。
|
6
ray1888 OP @xrlin 还有一个问题,假设我用一个视图类继承了 django 的 View 类,我有除了 Post,delete 以外的那些方法,
我应该怎样才能测试那些方法?还是应该把那些方法拆分到视图类意外,然后写单独的单元测试? |