【问题标题】:Python unit testing without django没有 Django 的 Python 单元测试
【发布时间】:2015-02-23 07:33:37
【问题描述】:

如何在 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 奖金超级超级......而且我很确定 Python 本身的默认单元测试对于我的小项目来说已经绰绰有余了。

【问题讨论】:

    标签: python django python-3.x unit-testing


    【解决方案1】:

    您的单元测试是 unittest.TestCase 的子类,因此它们没有使用任何 Django 东西。

    回溯告诉您 PinyinTones2NumbersTransformerdjango.contrib.gis.gdal.prototypes.generation 导入 void_output。因此,除非您更改 PinyinTones2NumbersTransformer,否则您需要安装 django 才能运行测试。

    【讨论】:

    • 现在我觉得自己很愚蠢。 Pycharm 出于某种不可想象的原因将 django 导入文件中,但我看不到,因为不知何故我能够在 Pycharm 中打开同一个文件两次,而我只看到没有任何 django 导入的版本。但为什么???它是否插入了 django 导入? -.- 无论如何,谢谢,你解开了这个谜。
    猜你喜欢
    • 2021-07-23
    • 2011-08-20
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多