On Thu, Jul 10, 2014 at 8:35 PM, Russell Keith-Magee
<[email protected]> wrote:
>
> On Fri, Jul 11, 2014 at 3:34 AM, Larry Martell <[email protected]>
> wrote:
>>
>> I am trying to upgrade a site to 1.6. I read the change notes about
>> the tests now having to start with test.
>>
>> My project's structure is this:
>>
>> myproj/app/appname/tests
>>
>> and in that dir was a file called EventLog.py, and in that file a
>> function called EventLogTest
>>
>> My __init__ had:
>>
>> from myproj.app.appname.tests.EventLog import EventLogTest
>>
>> I would run the test with:
>>
>> manage.py test appname.EventLogTest
>>
>> I reanmed EventLog.py to testEventLog.py, and I also changed it in the
>> __init__ file to:
>>
>> from myproj.app.appname.tests.testEventLog import EventLogTest
>>
>> Then I tried:
>>
>> manage.py test appname.EventLogTest
>>
>> ImportError: No module named appname
>>
>> manage.py test app.appname.EventLogTest
>>
>> ImportError: No module named app
>>
>> manage.py test myproj.app.appname.EventLogTest
>>
>> AttributeError: 'module' object has no attribute 'EventLogTest'
>>
>> manage.py test myproj.app.appname.tests.EventLogTest
>>
>> AttributeError: 'module' object has no attribute 'tests'
>>
>>
>> What simple, stupid thing I am doing wrong here? What do I have to do
>> to run my tests in 1.6?
>
>
> It depends where you're coming from, and how long you need your project to
> last.
>
> If you've got a working Django 1.5 project, and you just need to get it into
> 1.6 as fast as possible, then just add
>
> TEST_RUNNER = 'django.test.simple.DjangoTestSuiteRunner'
>
> to your settings file, and you're done. Your 1.6 test suite will run exactly
> the same as it does in 1.5, and there won't be any change to the way your
> test suite runs - no changes to the way the tests are found, and no change
> to the way you execute them. That means:
>
>  * If you've got a tests *package*, you'll have to put a bunch of imports in
> the tests/__init__.py module so that all the test classes are sitting in the
> appname.tests namespace
>
>  * When you run a test, you run one of:
>    - manage.py test appname
>    - manage.py test appname.TestClassName
>    - manage.py test appname.TestClassName.test_this_feature
>
> However, if you want to upgrade to the "new" behaviour in 1.6, you need to
> make other changes.
>
> The "new" test runner doesn't require the imports in tests/__init__.py. It
> does automated discovery of file in those submodules named test*.py. If your
> tests aren't in files with "discoverable" names, you'll need to either
> rename the files (and directories), or manually point manage.py test at the
> right filenames.
>
> If you've got a newly-structured test suite, then invoking tests is slightly
> different, too:
>    - manage.py test appname
>    - manage.py test appname.tests.test_submodule.TestClassName
>    - manage.py test
> appname.tests.test_submodule.TestClassName.test_this_feature
>
> That is, you give the fully qualified Python module name of a test class,
> not just the 'app name.classname' simplification.
>
> See
> https://docs.djangoproject.com/en/dev/topics/testing/overview/#running-tests
> for more details, including details of how to include files other than
> test_*.
>
> As an aside - if you want your project to be long lived, you'll *eventually*
> need to make these naming changes to your test suite. It's just a question
> of whether you need to do it *right now*. The old approach will still work
> in 1.6; it will also work in 1.7, but will be more noisy. In 1.8, the
> DjangoTestSuiteRunner will be removed completely. So, if you want your
> project test suite to last until Django 1.8 and beyond, you'll ultimately
> need to make these changes.
>
> I hope that helps.

I appreciate the detailed reply, and I think I understand all this,
but I still cannot get my tests to run. Let's look at one test.

My tests are in this dir: /usr/local/motor/motor/app/cdsem/tests
A file with a test is called: testEventLog.py
In that file is a class EventLogTest

I am running manage.py from /usr/local/motor

How would I run that test?

I have tried:

manage.py  test app.cdsem.tests.testEventLog
manage.py  test app.cdsem.tests.testEventLog.EventLogTest
manage.py  test cdsem.tests.testEventLog
manage.py  test cdsem.tests.testEventLog.EventLogTest
manage.py  test motor.app.cdsem.tests.testEventLog
manage.py  test motor.app.cdsem.tests.testEventLog.EventLogTest
manage.py  test tests.testEventLog.EventLogTest

And none of them find the test. What am I doing wrong?

Thanks!

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CACwCsY7D_oXT20nLGtbbsFZrCLnZNqZxTdFGfLpvx2iiV3GXjQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to