【问题标题】:Where do I need to place my Django tests so that they get executed?我需要在哪里放置我的 Django 测试以便它们被执行?
【发布时间】:2019-06-23 03:49:03
【问题描述】:

我正在使用 Django 和 Python 3.7。我想创建并运行一些单元测试。根据 Django 文档,我创建了这个文件...

ls ./mainpage/tests/test_models.py

但是当我使用下面的命令运行我的测试时,它说执行了零测试......

(venv) localhost:mainpage_project davea$ cd /Users/davea/Documents/workspace/mainpage_project; source ./venv/bin/activate; python manage.py test
Creating test database for alias 'default'...
/Users/davea/Documents/workspace/mainpage_project/venv/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1421: RuntimeWarning: DateTimeField Article.main_page_first_appeared_date received a naive datetime (2019-01-29 22:43:53.575128) while time zone support is active.
  RuntimeWarning)
System check identified no issues (0 silenced).

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK
Destroying test database for alias 'default'...

以下是我的文件的内容。我错过了什么?我应该把我的测试放在哪里或者应该如何命名它们以便它们被执行?

from django.test import TestCase
from mainpage.models import ArticleStat, Article


class TestModels(unittest.TestCase):

    # Test saving an article stat that hasn't previously
    # existed
    def test_add_articlestat(self):
        id = 1
        article = Article.objects.filter(id=id)
        self.assertTrue(article, "A pre-condition of this test is that an article exist with id=" + str(id))
        articlestat = ArticleStat(article=article,elapsed_time_in_seconds=250,votes=25,comments=15)
        articlestat.save()
        article_stat = ArticleStat.objects.get(article=article)
        self.assertTrue(article_stat, "Failed to svae article stat properly.")

【问题讨论】:

  • 每个应用都有一个tests.py,把你的测试代码放在那里
  • 不要忘记在你的测试目录中添加 init.py
  • @yorodm,人们将整个测试套件放在一个文件中吗?如果人们想分解可读性测试并将相似的测试分组到不同的文件中怎么办?仍在学习 Django/Python,所以也许我要问的不是已经完成的。

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


【解决方案1】:

我认为您想在一个目录中管理测试。像这样。

.
├── app1
├── app2
├── ...
├── tests
│   ├── __init__.py
│   └── test_1.py
└── manage.py

你必须导入你的测试类。

# tests/__init__.py
from .test_1 import YourTestClass

然后,您可以通过python manage.py test tests 运行测试。如果只想运行test_1 模块,命令为python manage.py test tests.test_1

【讨论】:

    猜你喜欢
    • 2010-11-18
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 2015-03-14
    • 1970-01-01
    相关资源
    最近更新 更多