Pytest-django: Windows: خطأ OSE: [WinError 123] بسبب تغييرات pathlib

تم إنشاؤها على ٢٩ أغسطس ٢٠١٨  ·  12تعليقات  ·  مصدر: pytest-dev/pytest-django

يحتوي pytest.ini على المحتوى التالي:

[pytest]
DJANGO_SETTINGS_MODULE = project.settings_pytest
addopts = --doctest-modules --cov=. --cov-report html:./coverage/python/html
norecursedirs = .git .venv .vscode node_modules

أعتقد أن المسار الشبيه بـ Unix الذي تم تمريره إلى --cov-report يتسبب في تعطل أحدث إصدار من pytest-django على Windows. (لأنه في ملف .ini ، لا أعرف أي طريقة مستقلة عن النظام الأساسي لتحديده).

إليك التتبع الذي يظهر عند تشغيل pytest :

Traceback (most recent call last):
  File "C:\Program Files\Python37\Lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Program Files\Python37\Lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Users\Atul\.virtualenvs\tenants2-Gxdtcl1v\Scripts\pytest.exe\__main__.py", line 9, in <module>
  File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\_pytest\config\__init__.py", line 55, in main
    config = _prepareconfig(args, plugins)
  File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\_pytest\config\__init__.py", line 180, in _prepareconfig
    pluginmanager=pluginmanager, args=args
  File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\hooks.py", line 258, in __call__
    return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
  File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\manager.py", line 67, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\manager.py", line 61, in <lambda>
    firstresult=hook.spec_opts.get('firstresult'),
  File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\callers.py", line 196, in _multicall
    gen.send(outcome)
  File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\_pytest\helpconfig.py", line 89, in pytest_cmdline_parse
    config = outcome.get_result()
  File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\callers.py", line 76, in get_result
    raise ex[1].with_traceback(ex[2])
  File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\callers.py", line 180, in _multicall
    res = hook_impl.function(*args)
  File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\_pytest\config\__init__.py", line 612, in pytest_cmdline_parse
    self.parse(args)
  File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\_pytest\config\__init__.py", line 777, in parse
    self._preparse(args, addopts=addopts)
  File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\_pytest\config\__init__.py", line 739, in _preparse
    early_config=self, args=args, parser=self._parser
  File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\hooks.py", line 258, in __call__
    return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
  File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\manager.py", line 67, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\manager.py", line 61, in <lambda>
    firstresult=hook.spec_opts.get('firstresult'),
  File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\callers.py", line 201, in _multicall
    return outcome.get_result()
  File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\callers.py", line 76, in get_result
    raise ex[1].with_traceback(ex[2])
  File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\callers.py", line 180, in _multicall
    res = hook_impl.function(*args)
  File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pytest_django\plugin.py", line 209, in pytest_load_initial_conftests
    _django_project_scan_outcome = _add_django_project_to_path(args)
  File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pytest_django\plugin.py", line 140, in _add_django_project_to_path
    project_dir = find_django_path(args)
  File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pytest_django\plugin.py", line 127, in find_django_path
    args = [p for p in args if p.is_dir()]
  File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pytest_django\plugin.py", line 127, in <listcomp>
    args = [p for p in args if p.is_dir()]
  File "C:\Program Files\Python37\Lib\pathlib.py", line 1330, in is_dir
    return S_ISDIR(self.stat().st_mode)
  File "C:\Program Files\Python37\Lib\pathlib.py", line 1140, in stat
    return self._accessor.stat(self)
OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: 'html:.\\coverage\\python\\html'
bug

ال 12 كومينتر

يبدو أنه يرجع إلى التبديل إلى pathlib.

/ cc voidus

جرب --cov-report=html:./coverage/python/html كحل بديل.

مرحبًا ، لدي أيضًا مشكلة مع pytest. \ app \ test.py :: WebServiceTest

هل يعمل الحل؟

أهلا
خطأ نظام التشغيل: [WinError 123] Die Syntax für den Dateinamen، Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch: 'app \ tests.py :: WebServiceTest'
(نص الخطأ ألماني)

وهذا هو ملف pytest.ini الخاص بي. لا توجد أشياء تغطية.

[pytest]
DJANGO_SETTINGS_MODULE = إعدادات DjangoBasisLager
python_files = tests.py الاختبارات _ *. py * _tests.py

تكمن المشكلة في المسار إلى ملف الاختبار.

سجل الأخطاء الكامل:
(DjangoBasisLager - RYvLsCA) PS C: UsersLubitzworkspacebasislagerDjangoBasisLager> pytest. \ app \ test.py :: WebServiceTest
Traceback (آخر مكالمة أخيرة):
ملف "C: Program FilesPython36Librunpy.py" ، السطر 193 ، في _run_module_as_main
"__main__" ، mod_spec)
ملف "C: Program FilesPython36Librunpy.py" ، السطر 85 ، في _run_code
exec (كود ، run_globals)
ملف "C: UsersLubitz.virtualenvsDjangoBasisLager - RYvLsCAScriptspytest.exe__main __. py" ، السطر 9 ، في
ملف "c: userslubitz.virtualenvsdjangobasislager - ryvlscalibsite-bundes_pytestconfig__init __. py" ، السطر 56 ، بشكل رئيسي
config = _prepareconfig (args ، plugins)
ملف "c: userslubitz.virtualenvsdjangobasislager - ryvlscalibsite -pack_pytestconfig__init __. py" ، السطر 181 ، في _prepareconfig
pluginmanager = مدير البرنامج المساعد ، args = args
ملف "c: userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggyhooks.py" ، السطر 258 ، في __call__
إرجاع self._hookexec (self، self._nonwrappers + self ._wrappers، kwargs)
ملف "c: userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggymanager.py" ، السطر 67 ، في _hookexec
إرجاع self._inner_hookexec (خطاف ، طرق ، kwargs)
ملف "c: userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggymanager.py" ، السطر 61 ، في
firstresult = hook.spec_opts.get ('firstresult') ،
ملف "c: userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggycallers.py" ، السطر 196 ، في _multicall
gen.send (النتيجة)
ملف "c: userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytesthelpconfig.py" ، السطر 89 ، في pytest_cmdline_parse
التكوين = result.get_result ()
ملف "c: userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggycallers.py" ، السطر 76 ، في get_result
رفع ex [1] .with_traceback (مثال [2])
ملف "c: userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggycallers.py" ، السطر 180 ، في _multicall
الدقة = hook_impl.function ( args)ملف "c: userslubitz.virtualenvsdjangobasislager - ryvlscalibsite -pack_pytestconfig__init __. py" ، السطر 617 ، في pytest_cmdline_parseتحليل الذات (أرغس)ملف "c: userslubitz.virtualenvsdjangobasislager - ryvlscalibsite -pack_pytestconfig__init __. py" ، السطر 782 ، في التحليلself._preparse (args ، addopts = addopts)ملف "c: userslubitz.virtualenvsdjangobasislager - ryvlscalibsite -pack_pytestconfig__init __. py" ، السطر 744 ، في _preparseearly_config = self ، args = args ، parser = self._parserملف "c: userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggyhooks.py" ، السطر 258 ، في __call__إرجاع self._hookexec (self، self._nonwrappers + self ._wrappers، kwargs)ملف "c: userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggymanager.py" ، السطر 67 ، في _hookexecإرجاع self._inner_hookexec (خطاف ، طرق ، kwargs)ملف "c: userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggymanager.py" ، السطر 61 ، في






أرغس)
ملف "C: UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAlibsite-packagespytest_djangoplugin.py" ، السطر 209 ، في pytest_load_initial_conftests
_django_project_scan_outcome = _add_django_project_to_path (args)
ملف "C: UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAlibsite-packagespytest_djangoplugin.py" ، السطر 140 ، في _add_django_project_to_path
project_dir = find_django_path (args)
ملف "C: UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAlibsite-packagespytest_djangoplugin.py" ، السطر 127 ، في find_django_path
args = [p for p في args if p.is_dir ()]
ملف "C: UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAlibsite-packagespytest_djangoplugin.py" ، سطر 127 ، في
args = [p for p في args if p.is_dir ()]
ملف "C: Program FilesPython36Libpathlib.py" ، السطر 1346 ، في is_dir
إرجاع S_ISDIR (self.stat (). st_mode)
ملف "C: Program FilesPython36Libpathlib.py" ، السطر 1156 ، في stat
إرجاع self._accessor.stat (ذاتي)
ملف "C: Program FilesPython36Libpathlib.py" ، السطر 387 ، ملفوف
عودة strfunc (str (pathobj) ، * args)
خطأ نظام التشغيل: [WinError 123] Die Syntax für den Dateinamen، Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch: 'app \ tests.py :: WebServiceTest'

آه ، أرى .. يتم تشغيله بالنسبة لك لجدال عادي.

تضمين التغريدة
هل يمكنك النظر في إصلاح هذا ، من فضلك؟

مرحبًا ، هل يمكنني المساعدة بأي طريقة لإصلاح المشكلة؟ هل هناك وجبة فطور وغداء يمكنني اختبارها أم ينبغي علي النظر في المشكلة لإصلاحها؟

ههههههههههه
لا شيء للاختبار.
إنه مرتبط برمز pathlib الذي يتم إضافته (انظر تتبع المكدس الخاص بك).
سيكون رائعًا إذا كان بإمكانك توفير العلاقات العامة مع الإصلاح.

@ pinguin999 لست متأكدًا تمامًا من سبب هذا الخطأ ، لكنني أظن أن مواصفات فئة الاختبار ( ::WebServiceTest ) قد تكون هي السبب.

لقد أنشأت فرعًا يتم فيه تقسيم هذا الجزء قبل إجراء الاختبارات وسيكون أمرًا رائعًا إذا أمكنك تجربته ، حيث لا يتوفر لدي جهاز يعمل بنظام windows به إعداد مطور. يمكنك العثور عليه في الفرع oserror_pathlib في مفترقتي على https://github.com/voidus/pytest-django.

https://github.com/voidus/pytest-django/tree/oserror_pathlib

نعم ، على ما يبدو ":" في الحجج بكفالة على ويندوز.
أعتقد أن التصحيح الخاص بك على ما يرام ، لقد قمت بإنشاء https://github.com/pytest-dev/pytest-django/pull/648 به.

أهلا
آسف كنت في عطلة.
لقد قمت بالتحديث إلى 3.4.3 وهو يعمل.

اشكرك

# إزالة هذا السطر من التعليمات البرمجية ====== 'module_name' ،
من قائمة INSTALLED_APPS

حسنًا ، حدث هذا لي أيضًا.
تأكد أولاً من بدء تشغيل التطبيق في مجلد المشروع
على سبيل المثال:
موقع ويب django-admin startproject
موقع cd
موسيقى startapp django-admin "

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

mjk4 picture mjk4  ·  4تعليقات

mpasternak picture mpasternak  ·  5تعليقات

aljosa picture aljosa  ·  8تعليقات

clintonb picture clintonb  ·  4تعليقات

AndreaCrotti picture AndreaCrotti  ·  5تعليقات