python 为什么强哥看不到我的测试?

u3r8eeie  于 2023-02-21  发布在  Python
关注(0)|答案(7)|浏览(158)

我创建了www.example.com模块,其中包含test.py module, filled with

from django.test import TestCase
from django.test.client import Client
from django.contrib.auth.models import User
from django.contrib.sites.models import Site

from forum.models import *

class SimpleTest(TestCase):

    def setUp(self):
        u = User.objects.create_user("ak", "ak@abc.org", "pwd")
        Forum.objects.create(title="forum")
        Site.objects.create(domain="test.org", name="test.org")

    def content_test(self, url, values):
        """Get content of url and test that each of items in `values` list is present."""
        r = self.c.get(url)
        self.assertEquals(r.status_code, 200)
        for v in values:
            self.assertTrue(v in r.content)

    def test(self):
        self.c = Client()
        self.c.login(username="ak", password="pwd")

        self.content_test("/forum/", ['<a href="/forum/forum/1/">forum</a>'])
        ....

并将其与我的应用程序一起放在文件夹中。当我通过

python manage.py test forum

创建测试数据库后,我得到答案"在0.000s内运行0次测试"
我做错了什么?
P.S.以下是我的项目层次结构:

MyProj:
    forum (it's my app):
        manage.py
        models.py
        views.py
        tests.py
        ...

我将www.example.com重命名为tests.py。Eclipse发现此模块包含测试,但答案仍然是"在0.000s内运行0个测试"test.py to tests.py. Eclipse got that this module is with tests, but answer is still "Ran 0 tests in 0.000s"

jfgube3f

jfgube3f1#

您需要为每个测试方法使用前缀test_

thtygnil

thtygnil2#

    • 摘要**

1.尝试仅为您的应用运行:

python manage.py test YOUR_APP

1.如果YOUR_APP在INSTALLED_APPS配置中,请检查您的settings.py文件。
1.测试方法应以test_开头,例如:

def test_something(self):
    self.assertEquals(1, 2)

1.如果使用名为tests的目录而不是tests.py文件,请检查该目录中是否包含__init__.py文件。
1.如果您使用的是tests目录,请删除tests.pyctests.pyo文件。(对于Python3为__pycache__目录)

enxuqcxy

enxuqcxy3#

尝试将方法test重命名为类似test_content的名称。
我相信测试运行器会运行所有名为test_*的方法(参见python文档来组织测试代码。Django的TestCaseunittest.TestCase的子类,所以应该应用相同的规则。

r3i60tvu

r3i60tvu4#

你得把它命名为tests.py

2fjabf4q

2fjabf4q5#

经过一段时间的搜索,我没有发现任何人建议这样做,所以我将分享它作为一个迟来的答案。在我的情况下,我有我的manage.py在根目录eg

.
...
├── dir
│   ├── project_name
│   ├── manage.py
│   ├── media
│   ├── app1
│   ├── static
│   ├── staticfiles
│   ├── templates
│   └── app2
...

所以我发现test命令可以提供项目要运行的测试,在我的例子中我必须这样做

python project_name/manage.py test ./project_name/

这成功地运行了我的测试。

yvfmudvl

yvfmudvl6#

如果将文件重命名为tests.py后得到相同的结果,那么有些事情就不太对劲了。您是如何运行测试的?您是从命令行运行测试,还是使用Eclipse设置了一个自定义运行目标?如果还没有,请从命令行尝试。
启动Django shell(python manage.py shell)并导入测试模块。

from MyProj.forum.tests import SimpleTest

导入是否正常工作?

lymnna71

lymnna717#

我尝试了所有这些方法,但是我忘了在tests目录中添加__init__.py文件,Django找不到它。

相关问题