#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 , 11 years ago
comment:2 by , 11 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 , 11 years ago
Has patch: | set |
---|
comment:4 by , 11 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 , 11 years ago
Attachment: | ticket-21089.diff added |
---|
comment:5 by , 11 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 , 11 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Is this problem solved by setting
fixtures = None
?