2017-09-20 13 views
0

私はDjangoアプリで単体テスト(test.py)を問題なく実行してきました。私の最後のセッションでは、MYSQLデータベースとモデルを試していました。 DBを削除して再作成し、マイグレーションファイルを削除して、モデルを試しながらマイグレーションをゼロから行っています。Djangoユニットテストを実行できません。返り値django.core.exceptions.ImproperlyConfigured

ここで、unittestsは実行されません。

Traceback (most recent call last): 
    File "/opt/pycharm-2017.2.1/helpers/pycharm/_jb_unittest_runner.py", line 35, in <module> 
    main(argv=args, module=None, testRunner=unittestpy.TeamcityTestRunner, buffer=not JB_DISABLE_BUFFERING) 
    File "/usr/lib/python3.5/unittest/main.py", line 93, in __init__ 
    self.parseArgs(argv) 
    File "/usr/lib/python3.5/unittest/main.py", line 140, in parseArgs 
    self.createTests() 
    File "/usr/lib/python3.5/unittest/main.py", line 147, in createTests 
    self.module) 
    File "/usr/lib/python3.5/unittest/loader.py", line 219, in loadTestsFromNames 
    suites = [self.loadTestsFromName(name, module) for name in names] 
    File "/usr/lib/python3.5/unittest/loader.py", line 219, in <listcomp> 
    suites = [self.loadTestsFromName(name, module) for name in names] 
    File "/usr/lib/python3.5/unittest/loader.py", line 153, in loadTestsFromName 
    module = __import__(module_name) 
    File "/home/danny/PycharmProjects/AskArby/deals/tests.py", line 3, in <module> 
    from deals.models import Retailer 
    File "/home/danny/PycharmProjects/AskArby/deals/models.py", line 5, in <module> 
    class Retailer(models.Model): 
    File "/home/danny/PycharmProjects/AskArby/deals/models.py", line 6, in Retailer 
    name = models.CharField(max_length=200) 
    File "/home/danny/.virtualenvs/AskArby/lib/python3.5/site-packages/django/db/models/fields/__init__.py", line 1061, in __init__ 
    super(CharField, self).__init__(*args, **kwargs) 
    File "/home/danny/.virtualenvs/AskArby/lib/python3.5/site-packages/django/db/models/fields/__init__.py", line 172, in __init__ 
    self.db_tablespace = db_tablespace or settings.DEFAULT_INDEX_TABLESPACE 
    File "/home/danny/.virtualenvs/AskArby/lib/python3.5/site-packages/django/conf/__init__.py", line 56, in __getattr__ 
    self._setup(name) 
    File "/home/danny/.virtualenvs/AskArby/lib/python3.5/site-packages/django/conf/__init__.py", line 39, in _setup 
    % (desc, ENVIRONMENT_VARIABLE)) 
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. 

PyCharmはテストが見つかりませんでした。

これはmodels.pyの始まりです:

from django.db import models 
from django.utils.translation import ugettext_lazy as _ 

class Retailer(models.Model): 
    name = models.CharField(max_length=200) 
    base_url = models.URLField(max_length=500) 
    currency = models.CharField(max_length=3) 
    #css parameters for finding deals and subfields in HTML 
    deal_container_css = models.CharField(max_length=300) 
    title_css = models.CharField(max_length=300) 
    price_css = models.CharField(max_length=300) 
    old_price_css = models.CharField(max_length=300, null=True, blank=True) 
    brand_css = models.CharField(max_length=300, null=True, blank=True) 
    image_css = models.CharField(max_length=300, null=True, blank=True) 
    description_css = models.CharField(max_length=300, null=True, blank=True) 
    #for things that look like deal containers but aren't 
    exclude_css = models.CharField(max_length=300, null=True, blank=True) 
    shipping_css = models.CharField(max_length=300, null=True, blank=True) 
    product_model_css = models.CharField(max_length=300, null=True, blank=True) 

はtests.py:

from django.test import TestCase 
import unittest 
from deals.models import Retailer 

class RetailerTests(TestCase): 
    fixtures = ['initial_data.json'] 

class TestRetailer(unittest.TestCase): 

    def setUp(self): 
     self.bestbuy = Retailer(Retailer.objects.get(pk=1)) 

    def test_name(self): 
     self.assertEqual(self.bestbuy.name, 'Best Buy') 

私はmanage.pyコマンドとして実行されているのrunserver、Pycharmを使用しています。私はコマンドラインからDJANGO_SETTINGS_MODULEを設定しようとしましたが、それは正しい答えを返信します:AskArby.settings。私はsettings.configure()を呼び出そうとしており、設定が既に設定されていることを伝えています。私が実行したときのrunserver

はまた、私はこの警告を得る:

?: (1_8.W001) The standalone TEMPLATE_* settings were deprecated in Django 1.8 and the TEMPLATES dictionary takes precedence. You must put the values of the following settings into your default TEMPLATES dict: TEMPLATE_DIRS. 
deals.Marketplace.listing: (fields.W340) null has no effect on ManyToManyField. 

はなぜ私のアプリは一見test.pyで私のユニットテストを実行するために失敗していますか?

+0

test.pyの実行手順を説明できますか –

+0

私はPycharmの組み込みの「実行」機能を使用していました。シェルからpython manage.py testを使用すると、テストは正常に動作します。だからPycharmが問題だと思われます。おそらく私は新しいPycharmプロジェクトを作成し、それに私のファイルをインポートしようとします。 – RubyNoob

答えて

0

uはIDEからではなくcomandlineから実行した場合、plsはあなたのrunメソッドの前にthsesのコードを追加します。

import os 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "[your appname].settings") 
import django 
django.setup() 

幸運をUに!

関連する問題