django 自動化測試的故障排查
阿新 • • 發佈:2018-08-26
分析 配置 ant reat now() code .py eating destroy
【問題背景】
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‘...
django 自動化測試的故障排查