Giter VIP home page Giter VIP logo

django-discover-runner's People

Contributors

jezdez avatar rafales avatar riquito avatar thedrow avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

django-discover-runner's Issues

Test only models?

Hello,

Where can I setup a model for tests only? (For testing abstract models)

In django 1.5 (without installing this app, obviously), I can define the model in tests.py.
With django-nose models defined in test files are installed automatically as well.

Does the discover-runner support this in any way? Without explicitly calling syncdb from the tests?

Thank you!

Stop on first failure?

Is it possible to configure django-discover-runner so that it stops running tests after it encounters a test failure or error?

Add signal for finished tests

Add signal to DiscoverRunner which allows other apps to get the number of failed tests.

Original discussion here: https://twitter.com/jezdez/status/322755071878234112

What I want to do is to write an app which would generate system notifications when tests fail/succeed. With my hacked-up version this is what I get:

notification

For this I need to get the number of failed tests from discover runner.

Please include the License file in distributed packages

HI,
I just got django-discover-runner from pypi. Sadly, there is no license file included, as distributed via github clone.

For several reasons it'd be great, if you also could include the license in the package (tarball) to be downloaded e.g. from pypi. Thanks.

Run individual test case

Using ./manage.py test full.dotted.path.to.test_module syntax it is possible to all tests in a module. However, it is not possible to run a specific test inside the test module. This issue proposes that ./manage.py test full.dotted.path.to.test_module.test_specific syntax be supported, which runs the test test_specific inside of test_module only.

This is useful for picking a particular Selenium test to run for development.

Wheel file on PyPI is not correct

Wheel uploaded to PyPI contains management command, that references non-existing TEST_DISCOVER_ROOT, so running ./manage.py test is not possible.

The source package does not have management command at all and everything works OK.

This is what I get when package is installed via wheel:

$ ./manage.py test
Traceback (most recent call last):
  File "./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/paczkowski/.virtualenvs/itemizer/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 453, in execute_from_command_line
    utility.execute()
  File "/home/paczkowski/.virtualenvs/itemizer/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/paczkowski/.virtualenvs/itemizer/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 272, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "/home/paczkowski/.virtualenvs/itemizer/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 77, in load_command_class
    module = import_module('%s.management.commands.%s' % (app_name, name))
  File "/home/paczkowski/.virtualenvs/itemizer/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/home/paczkowski/.virtualenvs/itemizer/local/lib/python2.7/site-packages/discover_runner/management/commands/test.py", line 7, in <module>
    class Command(TestCommand):
  File "/home/paczkowski/.virtualenvs/itemizer/local/lib/python2.7/site-packages/discover_runner/management/commands/test.py", line 11, in Command
    default=settings.TEST_DISCOVER_ROOT,
AttributeError: 'module' object has no attribute 'TEST_DISCOVER_ROOT'

Cannot re-run failed tests within PyCharm

From PyCharm (JetBrains IDEA IDE), I'm used to re-runnin only failed tests as it speeds up the testing enormously. However, when using django-discover-runner, this functionality is broken. PyCharm provides the tests to be run in the same way as Django expects them. This app.tests.MyTestCase is provided as app.MyTestCase.

[python-path] /Applications/PyCharm.app/helpers/pycharm/django_test_manage.py test app.MyTest.test_method [project-path]

So could django-discover-runner also discover tests when provided as using the 'Django convention'?

"DatabaseError: duplicate column name" - bug with custom model's abstract class

Hi,

I have a problem with django-discover-runner and custom model's abtrsact class.

Example:

lib.py

from django.db import models

class ModelAbstract(models.base.ModelBase):
    def __new__(cls, name, bases, attrs):
        dateable = False
        if 'Meta' in attrs:
            if hasattr(attrs['Meta'], 'dateable'):
                dateable = attrs['Meta'].dateable
                delattr(attrs['Meta'], 'dateable')

     super_new = super(ModelAbstract, cls).__new__(cls, name, bases, attrs)

     if hasattr(super_new, '_meta') and not super_new._meta.abstract:
         if hasattr(super_new._meta, 'dateable'):
             dateable = super_new._meta.dateable
         else:
             super_new._meta.dateable = dateable

         if dateable:
             super_new.add_to_class('created_date',
                 models.DateTimeField('created at', auto_now_add=True))
       return super_new


class BaseModel(models.Model):
    __metaclass__ = ModelAbstract

    class Meta:
        abstract = True

models.py

class MyModel(BaseModel):
    name = models.CharField(max_length=100)

    class Meta:
        dateable = True

tests.py

from django.test import TestCase
from .models import MyModel

class SetUpProjectTestCase(TestCase):
    def setUp(self):
        self.obj = MyModel()
        self.obj.name = '...'
        self.obj.save()

    def tearDown(self):
        self.obj.delete()

settings.py

INSTALLED_APPS = (
    'discover_runner',
    'myapp',
)
TEST_RUNNER = 'discover_runner.DiscoverRunner'

django-discover-runner (whole project):

python manage.py test --settings=mysettings

Creating test database for alias 'default'...
DatabaseError: duplicate column name: created_date

:(

django-discover-runner (per app):

python manage.py test myapp --settings=mysettings

OK

Django default test (whole project):

python manage.py test --settings=mysettings

OK

Django default test (per app):

python manage.py test myapp --settings=mysettings

OK

What is wrong with django-discover-runner and test for whole project?

Failed import in test gives odd test error

(First-up, many thanks for this excellent tool).

Here's my basic setup (all tests in one directory with sub directories for each apps tests:

- manage.py
- project/
-- appA/
--- stuff.py
-- tests/
--- appA/
---- test_for_stuff.py

I was writing a new test file, and I had an import error (I'd written from appA import X, instead of from appA.models import X)

When I ran the test by running:

 ./manage.py test project.appA.tests.test_for_stuff

I got the following error:

  File "/home/bird/Dev/aptivate/econsensus/django/econsensus/.ve/local/lib/python2.7/site-packages/django/test/simple.py", line 380, in run_tests
    suite = self.build_suite(test_labels, extra_tests)
  File "/home/bird/Dev/aptivate/econsensus/django/econsensus/.ve/local/lib/python2.7/site-packages/discover_runner/runner.py", line 40, in build_suite
    suite = self.test_loader.loadTestsFromNames(test_labels)
  File "/usr/lib/python2.7/unittest/loader.py", line 128, in loadTestsFromNames
    suites = [self.loadTestsFromName(name, module) for name in names]
  File "/usr/lib/python2.7/unittest/loader.py", line 100, in loadTestsFromName
    parent, obj = obj, getattr(obj, part)
AttributeError: 'module' object has no attribute 'test_for_stuff'

I was a little confused by this because I thoguht it was trying to tell me my test_for_stuff file wasn't there.

I would have expected an ImportError.

Trying to test multiple apps.... Ran 0 tests in 0.000s

I have 10+ apps that I want to test and I'm trying to get it to work with django-discover-runner.

If I run one, it looks fine:

± % ./manage.py test content --configuration=Test
Creating test database for alias 'default'...
/home/django/.virtualenvs/astrobiology-alpha/local/lib/python2.7/site-packages/django/utils/hashcompat.py:9: DeprecationWarning: django.utils.hashcompat is deprecated; use hashlib instead
  DeprecationWarning)

.../home/django/.virtualenvs/astrobiology-alpha/local/lib/python2.7/site-packages/django/utils/text.py:221: DeprecationWarning: This function has been deprecated. Use the Truncator class in django.utils.text instead.
  'in django.utils.text instead.', category=DeprecationWarning)

............
----------------------------------------------------------------------
Ran 15 tests in 2.784s

OK
Destroying test database for alias 'default'...

Tests are in file 'test_models.py' in content/tests/

If I run another one, it also looks fine:

± % ./manage.py test groups --configuration=Test
/home/django/.virtualenvs/astrobiology-alpha/local/lib/python2.7/site-packages/django/utils/hashcompat.py:9: DeprecationWarning: django.utils.hashcompat is deprecated; use hashlib instead
  DeprecationWarning)

Creating test database for alias 'default'...
..........E.....
======================================================================
ERROR: test_team_members (tests.test_models.TeamTest)
----------------------------------------------------------------------
Traceback (most recent call last):
.
.
.
IntegrityError: duplicate key value violates unique constraint "reports_naiprojectreport_pkey"


----------------------------------------------------------------------
Ran 16 tests in 0.442s

FAILED (errors=1)
Destroying test database for alias 'default'...

Ok, failed test, but it still found and ran them.

Test file test_models.py in groups/tests/

Let's try running both:

± % ./manage.py test content groups --configuration=Test --traceback
Creating test database for alias 'default'...
/home/django/.virtualenvs/astrobiology-alpha/local/lib/python2.7/site-packages/django/utils/hashcompat.py:9: DeprecationWarning: django.utils.hashcompat is deprecated; use hashlib instead
  DeprecationWarning)


----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK
Destroying test database for alias 'default'...

Am I doing something wrong? The above should be valid, right?

Here is my Test configuration:

class Test(Base):

    DATABASES = {
        'default': {
            'ENGINE': 'django.contrib.gis.db.backends.postgis',
            'NAME': 'astrobiology_' + BUILD,
            'USER': 'astrobiology',
            'PASSWORD': 'xxxxxxxxxx',
        },
    }

    @property
    def INSTALLED_APPS(self):
        return (
            #'django_coverage',
            'django_nose',
            'discover_runner',
            'django_jenkins',
        ) + super(Test, self).INSTALLED_APPS

    JENKINS_TASKS = (
        'django_jenkins.tasks.with_coverage',
        'django_jenkins.tasks.django_tests',   # select one django or
        'django_jenkins.tasks.dir_tests',      # directory tests discovery
        'django_jenkins.tasks.run_pep8',
        #'django_jenkins.tasks.run_flake8',
        'django_jenkins.tasks.run_pyflakes',
        'django_jenkins.tasks.run_graphmodels',
        'django_jenkins.tasks.run_pylint',
        'django_jenkins.tasks.run_csslint',
        'django_jenkins.tasks.run_sloccount',
        'django_jenkins.tasks.run_jshint',
        'django_jenkins.tasks.lettuce_tests',
    )

    TEST_RUNNER = 'discover_runner.DiscoverRunner'
    #TEST_DISCOVER_TOP_LEVEL = TEST_DISCOVER_ROOT = PROJECT_ROOT
    #JENKINS_TEST_RUNNER = 'django_jenkins.nose_runner.CINoseTestSuiteRunner'
    DATABASE_ROUTERS = []

Is there anything I'm doing wrong?

Thanks!

Django models not loaded with this test runner.

Hi,

It looks like this test runner doesn't validate models before starting the tests.
I have one test that passes with Django's default test runner while it fails with django-discover-runner.

The exception is:
ValueError: Cannot create form field for 'vat' yet, because its related model 'vat.VAT' has not been loaded yet

I will try to make a test project since this one isn't open sourced.

TypeError: Item in ``from list'' not a string

I'm using Django 1.5 on Python 2.7.

$ cat config/settings.py | grep TEST_
TEST_RUNNER = 'discover_runner.DiscoverRunner'
TEST_DISCOVER_TOP_LEVEL = PROJECT_ROOT
TEST_DISCOVER_ROOT = PROJECT_ROOT
TEST_DISCOVER_PATTERN = 'test*.py'

$ ./manage.py test
Traceback (most recent call last):
  File "./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/danilo/.virtualenvs/pcf/lib/python2.7/site-packages/django/core/management/__init__.py", line 453, in execute_from_command_line
    utility.execute()
  File "/home/danilo/.virtualenvs/pcf/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/danilo/.virtualenvs/pcf/lib/python2.7/site-packages/django/core/management/commands/test.py", line 49, in run_from_argv
    super(Command, self).run_from_argv(argv)
  File "/home/danilo/.virtualenvs/pcf/lib/python2.7/site-packages/django/core/management/base.py", line 218, in run_from_argv
    parser = self.create_parser(argv[0], argv[1])
  File "/home/danilo/.virtualenvs/pcf/lib/python2.7/site-packages/django/core/management/commands/test.py", line 52, in create_parser
    test_runner_class = get_runner(settings, self.test_runner)
  File "/home/danilo/.virtualenvs/pcf/lib/python2.7/site-packages/django/test/utils.py", line 129, in get_runner
    test_module = __import__(test_module_name, {}, {}, test_path[-1])
TypeError: Item in ``from list'' not a string

Using the normal Django test runner, everything works. Is this error related to django-discover-runner?

Specifying individual test methods

Is it possible to specify individual test methods on the command line? If I try it like this:

python manage.py test myapp.tests.MyTestClass.test_my_method

Then I get an error like this:

TypeError: unbound method test_my_method() must be called with MyTestClass instance as first argument (got nothing instead)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.