• django 自动化测试的故障排查


    【问题背景】

      django使用mysql做为后台数据库、在使用django的自动化测试命令test时报如下错误

    python3 manage.py test polls
    Creating test database for alias 'default'...
    Got an error creating the test database: (1044, "Access denied for user 'appuser'@'127.0.0.1' to database 'test_tempdb'")

      报错非常明显了appuser@'127.0.0.1'这个用户没根据

    【收集信息与问题分析】

      1、django的数据库配置信息如下

    #以下是使用MySQL的配置
    DATABASES = {
        'default':{
            'ENGINE': 'django.db.backends.mysql', # 后台数据库的类型
            'HOST': '127.0.0.1',                  # 后台数据库所在主机的ip我这里用本机
            'PORT': 3306,                         # 后台数据库所监听的端口
            'USER': 'appuser',                    # 连接数据库的用户名
            'PASSWORD': '123456',                 # 连接数据库的密码
            'NAME': 'tempdb',                     # 数据库中的schema名字
        }
    }

      从这里可以看出来test_tempdb并不是真正的后台数据库、它是一个在测试时临时用的数据库、那么问题就解决了我们要给appuser一个相对比较大的权限

      就可以了,在这里我暴力一点直接给它一个all权限

    【解决方案】

      给appuser赋权

    grant all on *.* to 'appuser'@'127.0.0.1';

    【验证】

    python3 manage.py test polls
    Creating test database for alias 'default'...
    System check identified no issues (0 silenced).
    E
    ======================================================================
    ERROR: test_was_published_recently_with_future_question (polls.tests.QuestionModelTests)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/Users/jianglexing/Desktop/mysite/polls/tests.py", line 17, in test_was_published_recently_with_future_question
        time = datetime.now() + datetime.timedelta(days=30)
    AttributeError: module 'datetime' has no attribute 'now'
    
    ----------------------------------------------------------------------
    Ran 1 test in 0.004s
    
    FAILED (errors=1)
    Destroying test database for alias 'default'...
  • 相关阅读:
    js如何判断访问来源是来自搜索引擎(蜘蛛人)还是直接访问
    thinkphp AOP(面向切面编程)
    crontab命令详解 含启动/重启/停止
    直播协议的选择:RTMP vs. HLS
    说一下PHP中die()和exit()区别
    宝塔Linux常用命令
    阿里云Redis公网连接的解决办法
    DMA及cache一致性的学习心得 --dma_alloc_writecombine【转】
    DMA内存申请--dma_alloc_coherent 及 寄存器与内存【转】
    内核中container_of宏的详细分析【转】
  • 原文地址:https://www.cnblogs.com/JiangLe/p/9537257.html
Copyright © 2020-2023  润新知