小编Bel*_*iaf的帖子

如何在 Django 中正确使用 assertRaises

我的模型中有以下验证功能:

@classmethod
def validate_kind(cls, kind):
    if kind == 'test':
        raise ValidationError("Invalid question kind")
Run Code Online (Sandbox Code Playgroud)

我正在尝试如下测试:

w = Model.objects.get(id=1) 

self.assertRaises(ValidationError, w.validate_kind('test'),msg='Invalid question kind')
Run Code Online (Sandbox Code Playgroud)

我也试过:

self.assertRaisesRegex(w.validate_kind('test'),'Invalid question kind')
Run Code Online (Sandbox Code Playgroud)

这两个都不能正常工作。我究竟做错了什么?

django django-testing django-errors python-unittest django-tests

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

Python 单元测试任务.apply_async()

使用覆盖率来查看需要测试的内容,覆盖率显示接下来必须进行测试: send_alert.apply_async()

我知道这是芹菜任务,但是有什么方法可以测试代码行吗?

其余代码用于理解测试逻辑:

class SomeView(GenericAPIView)
    def post(self, request, *args, **kwargs):
        #some code
        if not value:
           send_alert.apply_async()
           # response
        # not if Response
Run Code Online (Sandbox Code Playgroud)

由于第一个答案而编写的测试

    @patch('event.views.send_alert')
    def test_send_alert(self, mock_send):
        data = {some data for post}
        response = self.client.post('/api/{0}/mettings/'.format(self.user), data)
        print(response.json())
        self.assertTrue(mock_send.called)
Run Code Online (Sandbox Code Playgroud)

我还检查了任务完成后的情况,print('Tasks Passed')我看到任务已通过的消息,但测试失败并出现错误AssertionError: False is not true

python django-testing celery python-unittest django-tests

5
推荐指数
1
解决办法
2269
查看次数

在TEST模式DRF中将标记添加到标头请求

如何'Authorization': 'Token'在Django/DRF中添加TEST请求?

如果我使用简单的requests.get(url, headers={'Authorization': 'Token'}所有工作完美但如何在TestCase中做这样的请求?

testcase django-rest-framework django-tests

4
推荐指数
1
解决办法
2678
查看次数

检查模板中的用户权限(不是请求用户)

您好,有什么方法可以检查模板中自定义用户 nit 请求用户的权限。代码示例:

{% for agency_user in users %}
    <tr>
        <td>{{ agency_user.username }}</td>
        <td>{{ agency_user.get_full_name }}</td>
        <td>{{ agency_user.groups.all.first.name }}</td>
        <td>{{ agency_user.min_price }}</td>
        <td>{{ agency_user.max_price }}</td>
        {% if agency_user|has_perm:'may_see_commerce_sell' %} #not working
            <td>some action</td>
        {% else %}
            <td>some action</td>
        {% endif %}
        <td>
            <a href="{% url 'user_edit' agency_user.id  %}" class="edit icon"></a>
            <a user-id="{{ agency_user.id }}" class="trash icon" title="some action"></a>
        </td>
    </tr>
    {% empty %}
        <td style="text-align: center" colspan="11">some action</td>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

或者我必须为每个用户权限编写自定义模型方法?

类似于在 Profile 模型中思考:

def sell_commerce(self):
    if self.has_perm('may_see_commerce_sell'):
        return …
Run Code Online (Sandbox Code Playgroud)

django django-templates django-permissions

0
推荐指数
1
解决办法
2116
查看次数