如何在 Python (3.4) 中编写不依赖于任何 django 内容的单元测试?
起初我以为 Pycharm 确实以某种方式人为地将 django 依赖项添加到我的单元测试中,但后来我通过运行进行了检查
python <test containing file>
我仍然得到这个奇怪的 django 输出:
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)
我的项目与django完全无关。我之前尝试过 django 教程,但这与我现在所做的事情无关。另外,我在看到这条消息后删除了 django,因为我认为 Python 解释器可能与 django 混淆了,django 也有一个名为 unittest 的模块,但这并没有解决问题。
我发现了这个:
http://stackoverflow.com/questions/10345948/django-vs-python2-7-unittest-testcase
但首先:我使用的是 Python 3.4,我不关心测试的向后兼容性。无论如何,没有其他人可能会看到或者甚至可能使用我的程序。这只是对我自己的一种锻炼,以更加习惯编写测试。
我想做的就是为我的类中的方法编写简单的测试,没有任何 django 额外的 super 巨额...而且我很确定 Python 本身的默认单元测试对于我的小项目来说已经足够了。
最佳答案
您的单元测试是 unittest.TestCase
的子类,因此它们不使用任何 Django 内容。
回溯告诉您 PinyinTones2NumbersTransformer
从 django.contrib.gis.gdal.prototypes. Generation
导入 void_output
。因此,除非您更改 PinyinTones2NumbersTransformer
,否则您需要安装 django
才能运行测试。
关于没有 django 的 Python 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27649492/