#21089 closed Bug (fixed)
TestCase can't define an empty list of fixtures
| Reported by: | Lorenzo Gil Sanchez | Owned by: | nobody |
|---|---|---|---|
| Component: | Testing framework | Version: | 1.5 |
| Severity: | Normal | Keywords: | fixtures |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | yes |
| Easy pickings: | no | UI/UX: | no |
Description
This could be useful if you have a TestCase base class that define some very basic fixtures that are used across all your tests but then, there is a few particular tests that do not want such fixtures.
Let's say you have something like:
class BaseTestCase(TestCase): fixtures = ['basic_data.json'] class NoFixturesTestCase(BaseTestCase): fixtures = []
If you do this you will get this error:
Traceback (most recent call last):
File "/home/lgs/proyectos/personal/django/django/test/testcases.py", line 173, in __call__
self._pre_setup()
File "/home/lgs/proyectos/personal/django/django/test/testcases.py", line 716, in _pre_setup
self._fixture_setup()
File "/home/lgs/proyectos/personal/django/django/test/testcases.py", line 848, in _fixture_setup
'skip_validation': True,
File "/home/lgs/proyectos/personal/django/django/core/management/__init__.py", line 159, in call_command
return klass.execute(*args, **defaults)
File "/home/lgs/proyectos/personal/django/django/core/management/base.py", line 289, in execute
output = self.handle(*args, **options)
File "/home/lgs/proyectos/personal/django/django/core/management/commands/loaddata.py", line 49, in handle
"No database fixture specified. Please provide the path "
CommandError: No database fixture specified. Please provide the path of at least one fixture in the command line.
You can use this hack as a workaround:
class NoFixturesTestCase(BaseTestCase): fixtures = ['non-existing-file.json']
And now you will get a warning instead of an error.
I'll create a Github branch with a test showing this behaviour and a fix for it.
Attachments (1)
Change History (8)
comment:1 by , 12 years ago
comment:2 by , 12 years ago
No, it is not solved by setting fixtures = None
The Github branch with the testcase to reproduce this error and the fix is located at: https://github.com/lorenzogil/django/compare/ticket_21089
comment:3 by , 12 years ago
| Has patch: | set |
|---|
comment:4 by , 12 years ago
| Patch needs improvement: | set |
|---|---|
| Triage Stage: | Unreviewed → Accepted |
This looks useful, but I have some questions about the patch.
Is there a particular reason that we're using getattr instead of simply defining a fixtures attribute on TransactionTestCase (see attached diff)?
by , 12 years ago
| Attachment: | ticket-21089.diff added |
|---|
comment:5 by , 12 years ago
I don't know about the reasons behind getattr. That code was there before, I just added an extra check. Your patch would work too so I can update my branch if that option is preferred.
comment:6 by , 12 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
Is this problem solved by setting
fixtures = None?