小编Man*_*ero的帖子

如何使用 django 设置配置进行日志记录,通过unittest 正确进行assertLogs 测试?

我有一个用于登录 django 项目的设置,我想使用assertLogs 进行测试。

我使用了文档中提供的示例:https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertLogs

with self.assertLogs('foo', level='INFO') as cm:
   logging.getLogger('foo').info('first message')
   logging.getLogger('foo.bar').error('second message')
self.assertEqual(cm.output, ['INFO:foo:first message',
                             'ERROR:foo.bar:second message'])
Run Code Online (Sandbox Code Playgroud)

我的 django 设置如下:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
        },
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
        'standard': {
            'format': '%(asctime)s %(levelname)s %(name)s %(message)s'
        },
    },
    'filters': {
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    'handlers': {
        'console': {
            'level': 'INFO',
            'filters': ['require_debug_true'],
            'class': 'logging.StreamHandler',
        },
        'default': {
            'level':'DEBUG',
            'class':'logging.handlers.RotatingFileHandler', …
Run Code Online (Sandbox Code Playgroud)

django logging python-3.x django-unittest

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

运行 django 测试时如何修复“TypeError:'ConnectionHandler'类型的参数不可迭代”?

当我在我的用户应用程序中执行 ```python -m unittest`` 时,我收到此错误:

TypeError: argument of type 'ConnectionHandler' is not iterable
Run Code Online (Sandbox Code Playgroud)

我正在 django 中自定义我的 User 模型,我想对其进行测试。我已经进行了迁移并且自定义 User 模型运行良好(我使用了一个新数据库),所以我希望能够成功运行测试。这是我的测试代码:

from django.test import TestCase
from django.contrib.auth import get_user_model

# Create your tests here.
class UsersManagersTests(TestCase):

    def test_create_user(self):
        User = get_user_model()
        user = User.objects.create_user(email='normal@user.com', password='foo')
        self.assertEqual(user.email, 'normal@user.com')
        self.assertTrue(user.is_active)
        self.assertFalse(user.is_staff)
        self.assertFalse(user.is_superuser)
        try:
            # username is None for the AbstractUser option
            # username does not exist for the AbstractBaseUser option
            self.assertIsNone(user.username)
        except AttributeError:
            pass
        with self.assertRaises(TypeError):
            User.objects.create_user()
        with self.assertRaises(TypeError):
            User.objects.create_user(email='')
        with self.assertRaises(ValueError):
            User.objects.create_user(email='', …
Run Code Online (Sandbox Code Playgroud)

django python-3.x django-unittest django-custom-user

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

错误:在使用序列化程序.ValidationError 引发错误时要解压的值太多(预期为 2)

我正在尝试通过覆盖to_internal_value函数并显示带有ValidationError的错误消息来验证端点中的空字段,与以下答案非常相似:

序列化程序.py

def to_internal_value(self, data):
    missing = []
    for k in ['comments']:
        try:
            if data[k] == '':
                missing.append(k)
        except Exception as e:
            missing.append(k)
        if len(missing):
            raise serializers.ValidationError("The following fields are required: %s" % ','.join(missing))
    return data
Run Code Online (Sandbox Code Playgroud)

问题是我得到:Error: too many values to unpack (expected 2)raise serializers.ValidationError指令被执行并且data注释字段为空('')时:

(Pdb) data
<QueryDict: {'csrfmiddlewaretoken': ['<csrfmiddlewaretoken>'], 'comments': [''], 'user': ['']}>
Run Code Online (Sandbox Code Playgroud)

甚至用一个简单的字符串进行测试:

raise serializers.ValidationError("The following fields are required: comments")

我收到同样的错误。在 python 控制台中, raise …

python django validation serialization django-rest-framework

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

如何在 v-autocomplete item-text vuetify 中连接两个字段

我正在寻找一种方法来连接 v-autocomplete 项目文本字段中的两个字段,

这是我的代码:

            <ol>
              <li>
                  <v-autocomplete
                    placeholder="Search a person"
                    prepend-inner-icon="mdi-magnify"
                    chips
                    clearable
                    dense
                    v-model="counterpart1"
                    item-value="id"
                    item-text="first_value"
                    :items="enrolled1"
                  />
              </li>
            </ol>
Run Code Online (Sandbox Code Playgroud)

我期望这样的事情:

            <ol>
              <li>
                  <v-autocomplete
                    placeholder="Search a person"
                    prepend-inner-icon="mdi-magnify"
                    chips
                    clearable
                    dense
                    v-model="counterpart1"
                    item-value="id"
                    item-text="first_value + second_value"
                    :items="enrolled1"
                  />
              </li>
            </ol>
Run Code Online (Sandbox Code Playgroud)

我试过这个:

item-text="first_value + second_value"
Run Code Online (Sandbox Code Playgroud)

和这个:

:item-text="`${first_value}, ${second_value}`"
Run Code Online (Sandbox Code Playgroud)

但我得到了[object Object]。我发现了这个类似的问题,但我认为我的情况有点不同,我不明白如何以这种方式改变它。

任何帮助将不胜感激

vue.js vuetify.js

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