相关疑难解决方法(0)

Django中的override_settings和modify_settings有什么区别?

Django 关于测试工具文档提到了@override_settings和@modify_settings装饰器用于测试,但是从文档(至少对我来说)来看它们之间有什么区别尚不清楚.

那么,它是什么?

python django

9
推荐指数
1
解决办法
1250
查看次数

如何重写测试设置中的一个值

如何在测试设置中重写 'user': '5/分钟' on 'user': '2/day'

REST_FRAMEWORK = {
    'DEFAULT_THROTTLE_RATES': {
         'user': '5/minute'
    }
}
Run Code Online (Sandbox Code Playgroud)

我如何使用@override_settings或带有上下文管理的mb来做到这一点?我只需要在一个测试中应用这个,我不能重写整个字典

def test_mytest(self):
    value = settings.REST_FRAMEWORK
    value['DEFAULT_THROTTLE_RATES'] = {'user':'2/day'}

    data1 = {}
    data2 = {}
    data3 = {}

with self.settings(REST_FRAMEWORK=value):
    resp1 = self.client.post(self.url, data1, format='json')
    resp2 = self.client.post(self.url, data1, format='json')
    resp3 = self.client.post(self.url, data1, format='json')

assert resp3.status_code == 429, resp3.data
Run Code Online (Sandbox Code Playgroud)

但是没有429错误,虽然值已经改变了

django throttling django-rest-framework

3
推荐指数
1
解决办法
2284
查看次数

将表达式作为参数传递:关键字不能是表达式

这是我的行动:

>>> def show(d):
        print d
... 
>>> test = {"result": True}
>>> show(test)
{'result': True}
>>> show(test["info"]="Some info")
  File "<console>", line 1
SyntaxError: keyword can't be an expression
Run Code Online (Sandbox Code Playgroud)

为什么我不能将表达式作为参数传递给函数?

python python-2.7

2
推荐指数
2
解决办法
2万
查看次数