我只是将tests.py
文件移动到一个名为tests的新目录,然后我在其中添加了__init__.py
文件,但是当我运行测试python manage.py test
时它说ran 0 tests in 0.000s
。怎么解决?我不知道如何像大多数人那样展示我的文件,但这里是一张图片!
此应用也在settings.py中添加,谢谢
编辑:这是test_models.py的示例
from django.test import TestCase
# Create your tests here.
from django.test import TestCase
from django.urls import reverse
from board.models import Board
from board.views import board_topics
class HomeTest(TestCase):
def home_test_case(self):
url = reverse('home')
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
class BoardTest(TestCase):
def setup(self):
Board.objects.create(title='Hello world',
description='My first Django app!')
def board_topics_status_code(self):
url = reverse('board_topics', kwargs={id: 1})
response = self.client.get(url)
return self.assertEqual(response.status_code, 200)
def board_topics_status_code_not_found(self):
url = reverse('board_topics', kwargs={id: 123})
response = self.client.get(url)
return assertEqual(response.status_code, 200)
def resolve_url_to_specific_fun(self):
url = resolve('board/1/')
return assertEqual(view.func, board_topics)
def HomeTests(TestCase):
def setUp(self):
self.board = Board.objects.create(
title='Django', description='Django Desc')
url = reverse('home')
self.response = self.client.get(url)
def home_test_view_status_code(self):
self.assertEqual(self.response.status_code, 200)
def home_test_func(self):
view = resolve('/')
self.assertEqual(view.func, home)
def test_home_contains_link_to_topics_page(self):
board_topics_url = reverse(
'board_topics', kwargs={'id': self.board.pk})
self.assertContains(self.response, 'href={0}'.format(board_topics_url))
您的所有测试都必须附加test_
前缀。重命名所有测试,将其添加到名称中。
例如:
def test_board_topics_status_code(self):
url = reverse('board_topics', kwargs={id: 1})
response = self.client.get(url)
return self.assertEqual(response.status_code, 200)
此外,您需要将def HomeTests(TestCase):
更改为class HomeTests(TestCase):
,这就是为什么您的上一次测试被正确命名但仍未被发现的原因。
您可以通过两种方式在项目中保留测试。我更喜欢第一个。
1.您的开发代码包含所有测试。这样,在编写开发代码时添加新测试会更容易,现在测试中附带了开发代码。
Project
├── __init__.py
├── api
│ ├── v1
│ │ ├── tests
│ │ │ ├── __init__.py
│ │ │ ├── test_serializers.py
│ │ │ └── test_views.py
│ │ ├── __init__.py
│ │ ├── serializers.py
│ │ ├── urls.py
│ │ └── views.py
│ ├── v2
│ │ ├── tests
│ │ │ ├── __init__.py
│ │ │ ├── test_serializers.py
│ │ │ └── test_views.py
│ │ ├── __init__.py
│ │ ├── serializers.py
│ │ ├── urls.py
│ │ └── views.py
│ ├── __init__.py
│ ├── serializers.py
│ └── urls.py
├── models
│ ├── tests
│ │ ├── __init__.py
│ │ ├── test_data_structures.py
│ │ ├── test_miscellaneous_models.py
│ │ ├── test_models.py
│ ├── __init__.py
│ ├── models.py
│ ├── data_structures.py
│ └── miscellaneous_models.py
├── resume_handler
│ ├── tests
│ │ ├── __init__.py
│ │ ├── test_handlers.py
│ │ ├── test_managers.py
│ │ ├── test_parsers.py
│ │ ├── test_uploaders.py
│ │ └── test_validators.py
│ ├── __init__.py
│ ├── handlers.py
│ ├── managers.py
│ ├── parsers.py
│ ├── uploaders.py
│ └── validators.py
├── tasks
│ ├── tests
│ │ ├── __init__.py
│ │ └── test_tasks.py
│ ├── __init__.py
│ ├── general.py
│ └── model_tasks.py
├── tests
│ └── test_utils.py
└── utils.py
另一种方法是将测试文件夹与项目文件夹分开。此测试文件夹保持与项目文件夹相同的层次结构。这使测试代码与开发代码分开。
Project
├── api
│ ├── v1
│ │ └── more code files ...
│ ├── v2
│ │ └── more code files ...
│ └── v3
│ └── more code files ...
├── choices
├── constants
├── models
│ ├── data_filters
│ ├── querysets
│ └── more code files ...
├── resume_builder
│ └── more code files ...
├── resume_handler
│ └── more code files ...
├── tasks
│ └── more code files ...
└── more code files ...
现在,在Project文件夹所在的同一目录中,创建一个测试文件夹,该文件夹维护相同的层次结构,但只包含相应的测试文件。
test
├── api
│ ├── v1
│ │ └── test files ...
│ ├── v2
│ │ └── test files ...
│ └── v3
│ └── test files ...
├── choices
├── constants
├── models
│ ├── data_filters
│ ├── querysets
│ └── test files ...
├── resume_builder
│ └── test files ...
├── resume_handler
│ └── test files ...
├── tasks
│ └── test files ...
└── test files ...