2014-12-25 2 views
2

Как я могу писать unittests в Python (3.4), которые не зависят от каких-либо материалов django?Python unit testing без django

Сначала я думал, что PyCharm сделал как-то искусственно добавить зависимости Джанго моего UnitTests, но потом я проверил, просто выдав

python <test containing file> 

И я все еще получаю этот странный вывод Джанго:

Traceback (most recent call last): 
    File "test_pinyinTones2NumbersTransformer.py", line 2, in <module> from PinyinTones2NumbersTransformer import PinyinTones2NumbersTransformer 
    File "/home/xiaolong/PycharmProjects/PinyinTransformer/pinyintransformer/PinyinTones2NumbersTransformer.py", line 1, in <module> from django.contrib.gis.gdal.prototypes.generation import void_output 
ImportError: No module named 'django' 

Здесь является моим исходным кодом тестового файла:

import unittest 
from PinyinTones2NumbersTransformer import PinyinTones2NumbersTransformer 

class TestPinyinTones2NumbersTransformer(unittest.TestCase): 
    def setUp(self): 
     self.pinyin_tones_2_numbers_transformer = PinyinTones2NumbersTransformer() 

    def test_setText (self): 
     self.fail() 

    def test_transform (self): 
     self.fail() 

    def test_getToneNumberOfTonedSyllable (self): 
     self.assertEquals(self.pinyin_tones_2_numbers_transformer.getToneNumberOfTonedSyllable("ne"), 0) 
     self.assertEquals(self.pinyin_tones_2_numbers_transformer.getToneNumberOfTonedSyllable("ān"), 1) 
     self.assertEquals(self.pinyin_tones_2_numbers_transformer.getToneNumberOfTonedSyllable("péng"), 2) 
     self.assertEquals(self.pinyin_tones_2_numbers_transformer.getToneNumberOfTonedSyllable("nǐ"), 3) 
     self.assertEquals(self.pinyin_tones_2_numbers_transformer.getToneNumberOfTonedSyllable("jiào"), 4) 

Мой проект имеет abso не имеет ничего общего с джанго. Раньше я пробовал учебник django, но это не имело никакого отношения к тому, что я делаю сейчас. Также я удалил django после просмотра этого сообщения, потому что я подумал, что, возможно, интерпретатор Python путается с django, также имеющим модуль под названием unittest, но это не устраняет проблему.

Я нашел это:

http://stackoverflow.com/questions/10345948/django-vs-python2-7-unittest-testcase 

Но прежде всего: Я использую Python 3.4 и я не забочусь о обратной совместимости моих тестов. Никто больше не увидит или даже не сможет использовать мою программу в любом случае. Для меня это всего лишь упражнение, чтобы больше привыкнуть к написанию тестов.

Все, что я хочу сделать, это написать простые тесты для методов в моих классах, без каких-либо бонусов django super mega ... Также я совершенно уверен, что по умолчанию unittests самого Python более чем достаточно для моего маленького проекта.

ответ

3

Ваши юнит-тесты являются подклассом unittest.TestCase, поэтому они не используют материал Django.

След говорит вам, что PinyinTones2NumbersTransformer импорт void_output от django.contrib.gis.gdal.prototypes.generation. Поэтому вам необходимо установить django для запуска теста, если вы не измените PinyinTones2NumbersTransformer.

+0

Прямо сейчас я чувствую себя довольно глупо. Pycharm по какой-то немыслимой причине ввел импорт django в файл, но я не мог этого видеть, потому что каким-то образом я смог открыть тот же файл дважды в Pycharm, и я видел версию без импорта django. Но почему??? он вставлял импорт django ?! -.- Спасибо в любом случае, вы решили загадку. – Zelphir