我希望默认情况下,pytest-django会运行与./manage.py test
相同的测试。相反,它运行所有Django测试,基本上运行它找到的每个python文件。
这是我的pytest.ini
:
[pytest]
python_files=*.py
norecursedirs = .*, CVS, _darcs, {arch}, *.egg, django, south
我希望能够像`py.test main.tests.TestAccess'那样运行一个测试用例。有关如何实现这一点的任何想法?
我试过-k但是,即使有了这个选项,我也看到很多其他文件正在运行,我对测试不感兴趣。这是一些输出:
(vgmdash33-env)The-Judge:vgmdash joshuafialkoff$ py.test -k nothing_by_this_name
==================================== test session starts ====================================
platform darwin -- Python 3.3.5 -- py-1.4.26 -- pytest-2.6.4
plugins: bdd, django
collected 18 items / 19 errors
========================================== ERRORS ===========================================
_____________________________ ERROR collecting temp_scripts.py ______________________________
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/_pytest/python.py:463: in _importtestmodule
mod = self.fspath.pyimport(ensuresyspath=True)
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/py/_path/local.py:641: in pyimport
__import__(modname)
E File "/Users/joshuafialkoff/Documents/setaris/vgmdash/temp_scripts.py", line 10
E wget --http-user='xxx.com\xxx' --http-password=xxxxxx http://xxx.xxx.com
E ^
E SyntaxError: invalid syntax
___________________________ ERROR collecting fabfile/__init__.py ____________________________
fabfile/__init__.py:1: in <module>
from django_fabric_aws import *
E ImportError: No module named 'django_fabric_aws'
_______________________ ERROR collecting fabfile/django_fabric_aws.py _______________________
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/py/_path/local.py:629: in pyimport
__import__(pkgpath.basename)
fabfile/__init__.py:1: in <module>
from django_fabric_aws import *
E ImportError: No module named 'django_fabric_aws'
_________________________ ERROR collecting fabfile/project_conf.py __________________________
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/py/_path/local.py:629: in pyimport
__import__(pkgpath.basename)
fabfile/__init__.py:1: in <module>
from django_fabric_aws import *
E ImportError: No module named 'django_fabric_aws'
_____________________________ ERROR collecting fabfile/tasks.py _____________________________
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/py/_path/local.py:629: in pyimport
__import__(pkgpath.basename)
fabfile/__init__.py:1: in <module>
from django_fabric_aws import *
E ImportError: No module named 'django_fabric_aws'
____________________ ERROR collecting fabfile/templates/gunicorn.conf.py ____________________
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/py/_path/local.py:641: in pyimport
__import__(modname)
E ImportError: No module named 'gunicorn.conf'
_____________________________ ERROR collecting vgmdash/urls.py ______________________________
vgmdash/urls.py:5: in <module>
from django.contrib import admin
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/contrib/admin/__init__.py:4: in <module>
from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME
<frozen importlib._bootstrap>:1565: in _find_and_load
???
<frozen importlib._bootstrap>:1532: in _find_and_load_unlocked
???
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/_pytest/assertion/rewrite.py:159: in load_module
py.builtin.exec_(co, mod.__dict__)
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/contrib/admin/helpers.py:4: in <module>
from django.contrib.admin.utils import (flatten_fieldsets, lookup_field,
<frozen importlib._bootstrap>:1565: in _find_and_load
???
<frozen importlib._bootstrap>:1532: in _find_and_load_unlocked
???
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/_pytest/assertion/rewrite.py:159: in load_module
py.builtin.exec_(co, mod.__dict__)
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/contrib/admin/utils.py:6: in <module>
from django.contrib.auth import get_permission_codename
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/contrib/auth/__init__.py:9: in <module>
from django.middleware.csrf import rotate_token
<frozen importlib._bootstrap>:1565: in _find_and_load
???
<frozen importlib._bootstrap>:1532: in _find_and_load_unlocked
???
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/_pytest/assertion/rewrite.py:159: in load_module
py.builtin.exec_(co, mod.__dict__)
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/middleware/csrf.py:14: in <module>
from django.utils.cache import patch_vary_headers
<frozen importlib._bootstrap>:1565: in _find_and_load
???
<frozen importlib._bootstrap>:1532: in _find_and_load_unlocked
???
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/_pytest/assertion/rewrite.py:159: in load_module
py.builtin.exec_(co, mod.__dict__)
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/utils/cache.py:26: in <module>
from django.core.cache import caches
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/core/cache/__init__.py:34: in <module>
if DEFAULT_CACHE_ALIAS not in settings.CACHES:
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/conf/__init__.py:46: in __getattr__
self._setup(name)
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/conf/__init__.py:40: in _setup
% (desc, ENVIRONMENT_VARIABLE))
E django.core.exceptions.ImproperlyConfigured: Requested setting CACHES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
___________________ ERROR collecting vgmdash/apps/activity/formatters.py ____________________
vgmdash/apps/activity/formatters.py:25: in <module>
formatter.register(...)
E TypeError: register() missing 2 required positional arguments: 'field_name' and 'format_func'
_____________________ ERROR collecting vgmdash/apps/activity/models.py ______________________
vgmdash/apps/activity/models.py:22: in <module>
class Log(model_url_mixin_factory(), models.Model):
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/db/models/base.py:286: in __new__
new_class._meta.apps.register_model(new_class._meta.app_label, new_class)
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/apps/registry.py:213: in register_model
(model_name, app_label, app_models[model_name], model))
E RuntimeError: Conflicting 'log' models in application 'activity': <class 'activity.models.Log'> and <class 'vgmdash.apps.activity.models.Log'>.
_____________________ ERROR collecting vgmdash/apps/authstats/models.py _____________________
vgmdash/apps/authstats/models.py:13: in <module>
class UserStats(models.Model):
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/db/models/base.py:286: in __new__
new_class._meta.apps.register_model(new_class._meta.app_label, new_class)
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/apps/registry.py:213: in register_model
(model_name, app_label, app_models[model_name], model))
E RuntimeError: Conflicting 'userstats' models in application 'authstats': <class 'authstats.models.UserStats'> and <class 'vgmdash.apps.authstats.models.UserStats'>.
_____________________ ERROR collecting vgmdash/apps/fileshare/models.py _____________________
vgmdash/apps/fileshare/models.py:14: in <module>
class FileShare(models.Model):
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/db/models/base.py:286: in __new__
new_class._meta.apps.register_model(new_class._meta.app_label, new_class)
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/apps/registry.py:213: in register_model
(model_name, app_label, app_models[model_name], model))
E RuntimeError: Conflicting 'fileshare' models in application 'fileshare': <class 'fileshare.models.FileShare'> and <class 'vgmdash.apps.fileshare.models.FileShare'>.
________________________ ERROR collecting vgmdash/apps/main/admin.py ________________________
vgmdash/apps/main/admin.py:4: in <module>
admin.site.register(Transaction)
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/contrib/admin/sites.py:84: in register
raise AlreadyRegistered('The model %s is already registered' % model.__name__)
E django.contrib.admin.sites.AlreadyRegistered: The model Transaction is already registered
_______________________ ERROR collecting vgmdash/apps/main/loggers.py _______________________
vgmdash/apps/main/loggers.py:12: in <module>
class ClientDetail(LogDetail):
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/db/models/base.py:286: in __new__
new_class._meta.apps.register_model(new_class._meta.app_label, new_class)
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/apps/registry.py:213: in register_model
(model_name, app_label, app_models[model_name], model))
E RuntimeError: Conflicting 'clientdetail' models in application 'main': <class 'main.loggers.ClientDetail'> and <class 'vgmdash.apps.main.loggers.ClientDetail'>.
_______________________ ERROR collecting vgmdash/apps/main/models.py ________________________
vgmdash/apps/main/models.py:44: in <module>
class Manufacturer(model_url_mixin_factory(), models.Model):
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/db/models/base.py:286: in __new__
new_class._meta.apps.register_model(new_class._meta.app_label, new_class)
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/apps/registry.py:213: in register_model
(model_name, app_label, app_models[model_name], model))
E RuntimeError: Conflicting 'manufacturer' models in application 'main': <class 'main.models.Manufacturer'> and <class 'vgmdash.apps.main.models.Manufacturer'>.
_________________ ERROR collecting vgmdash/apps/main/features/steps/auth.py _________________
vgmdash/apps/main/features/steps/auth.py:7: in <module>
use_step_matcher(re)
E NameError: name 're' is not defined
________________ ERROR collecting vgmdash/apps/main/features/steps/browse.py ________________
vgmdash/apps/main/features/steps/browse.py:1: in <module>
@when('I run a (?P<import_type>.*) import using "(?P<fn>.*)"')
E NameError: name 'when' is not defined
_______________ ERROR collecting vgmdash/apps/main/features/steps/objects.py ________________
vgmdash/apps/main/features/steps/objects.py:9: in <module>
use_step_matcher(re)
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/behave/matchers.py:209: in use_step_matcher
current_matcher = matcher_mapping[name]
E KeyError: <module 're' from '/Users/joshuafialkoff/Envs/vgmdash33-env/lib/python3.3/re.py'>
______________________ ERROR collecting vgmdash/apps/myauth/models.py _______________________
vgmdash/apps/myauth/models.py:16: in <module>
class User(model_url_mixin_factory(token_field='username'), UserBase):
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/db/models/base.py:253: in __new__
new_class.add_to_class(field.name, copy.deepcopy(field))
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/db/models/base.py:300: in add_to_class
value.contribute_to_class(cls, name)
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/db/models/fields/related.py:2241: in contribute_to_class
self.rel.through = create_many_to_many_intermediary_model(self, cls)
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/db/models/fields/related.py:1847: in create_many_to_many_intermediary_model
to: models.ForeignKey(to_model, related_name='%s+' % name, db_tablespace=field.db_tablespace, db_constraint=field.rel.db_constraint)
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/db/models/base.py:286: in __new__
new_class._meta.apps.register_model(new_class._meta.app_label, new_class)
../../../Envs/vgmdash33-env/lib/python3.3/site-packages/django/apps/registry.py:213: in register_model
(model_name, app_label, app_models[model_name], model))
E RuntimeError: Conflicting 'user_groups' models in application 'myauth': <class 'myauth.models.User_groups'> and <class 'vgmdash.apps.myauth.models.User_groups'>.
______________ ERROR collecting vgmdash/apps/myauth/migrations/0001_initial.py ______________
vgmdash/apps/myauth/migrations/0001_initial.py:2: in <module>
from south.utils import datetime_utils as datetime
E ImportError: No module named 'south'
====================== 18 tests deselected by '-knothing_by_this_name' ======================
=================== 18 deselected, 2 warnings, 19 error in 10.19 seconds ====================
答案 0 :(得分:6)
我看到更多选项
1)使用路径
py.test <path_to_my_app>
py.test将仅在该子目录中搜索测试
或
py.test <path_to_file>::<test>
只会执行
2)用特定标记装饰每个测试
@pytest.mark.app1
def test_bla_bla():
....
并使用
运行 py.test -m app1
3)使用-k
传递测试功能名称
答案 1 :(得分:1)
您可以使用-k
选项运行单个测试。