Pytest-django: Windows: OSError: [WinError 123] karena perubahan pathlib

Dibuat pada 29 Agu 2018  ·  12Komentar  ·  Sumber: pytest-dev/pytest-django

pytest.ini memiliki konten berikut:

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

Saya percaya jalur mirip Unix yang diteruskan ke --cov-report menyebabkan versi terbaru pytest-Django mogok di Windows. (Karena ada dalam file .ini , saya tidak tahu cara independen platform untuk menentukannya).

Berikut traceback yang ditampilkan saat menjalankan 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

Semua 12 komentar

Tampaknya karena beralih ke pathlib.

/cc @voidus

Coba --cov-report=html:./coverage/python/html sebagai solusi.

Hai, saya juga punya masalah dengan pytest .\app\tests.py::WebServiceTest

Apakah solusinya berhasil?

Hai
OSError: [WinError 123] Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch: 'app\tests.py::WebServiceTest'
(teks kesalahan dalam bahasa Jerman)

Dan ini adalah file pytest.ini saya. Tidak ada barang liputan.

[uji coba]
Django_SETTINGS_MODULE = DjangoBasisLager.settings
python_files = tes.py tes_*.py *_tests.py

Masalahnya adalah dengan jalur ke file uji.

Log kesalahan lengkap:
(DjangoBasisLager--RYvLsCA) PS C:UsersLubitzworkspacebasislagerDjangoBasisLager> pytest .\app\tests.py::WebServiceTest
Traceback (panggilan terakhir terakhir):
File "C:Program FilesPython36Librunpy.py", baris 193, di _run_module_as_main
"__main__", mod_spec)
File "C:Program FilesPython36Librunpy.py", baris 85, di _run_code
exec(kode, run_globals)
File "C:UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAScriptspytest.exe__main__.py", baris 9, di
File "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytestconfig__init__.py", baris 56, di main
config = _prepareconfig(args, plugins)
File "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytestconfig__init__.py", baris 181, di _prepareconfig
pluginmanager=pengelola plugin, args=args
Berkas "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggyhooks.py", baris 258, di __call__
kembalikan self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
Berkas "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggymanager.py", baris 67, di _hookexec
kembalikan self._inner_hookexec(kait, metode, kwargs)
Berkas "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggymanager.py", baris 61, di
firstresult=hook.spec_opts.get('firstresult'),
File "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggycallers.py", baris 196, di _multicall
gen.send(hasil)
File "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytesthelpconfig.py", baris 89, di pytest_cmdline_parse
konfigurasi = hasil.get_result()
File "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggycallers.py", baris 76, di get_result
naikkan ex[1].with_traceback(ex[2])
File "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggycallers.py", baris 180, di _multicall
res = hook_impl.function( args)File "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytestconfig__init__.py", baris 617, di pytest_cmdline_parsediri.parse(args)File "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytestconfig__init__.py", baris 782, di parseself._preparse(args, addopts=addopts)File "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytestconfig__init__.py", baris 744, di _preparseearly_config=self, args=args, parser=self._parserBerkas "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggyhooks.py", baris 258, di __call__kembalikan self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)Berkas "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggymanager.py", baris 67, di _hookexeckembalikan self._inner_hookexec(kait, metode, kwargs)Berkas "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggymanager.py", baris 61, di






argumen)
Berkas "C:UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAlibsite-packagespytest_djangoplugin.py", baris 209, di pytest_load_initial_conftests
_django_project_scan_outcome = _add_django_project_to_path(args)
Berkas "C:UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAlibsite-packagespytest_djangoplugin.py", baris 140, di _add_django_project_to_path
project_dir = temukan_django_path(args)
Berkas "C:UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAlibsite-packagespytest_djangoplugin.py", baris 127, di find_django_path
args = [p untuk p dalam args jika p.is_dir()]
Berkas "C:UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAlibsite-packagespytest_djangoplugin.py", baris 127, di
args = [p untuk p dalam args jika p.is_dir()]
File "C:Program FilesPython36Libpathlib.py", baris 1346, di is_dir
kembali S_ISDIR(self.stat().st_mode)
File "C:Program FilesPython36Libpathlib.py", baris 1156, dalam status
kembalikan self._accessor.stat(self)
File "C:Program FilesPython36Libpathlib.py", baris 387, dibungkus in
kembali strfunc(str(pathobj), *args)
OSError: [WinError 123] Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch: 'app\tests.py::WebServiceTest'

Ah, begitu.. itu dipicu untukmu untuk argumen normal.

@voidus
Dapatkah Anda melihat ke dalam memperbaiki ini, please?

Hai, bisakah saya membantu dengan cara apa pun untuk memperbaiki masalah? Apakah ada brunch yang bisa saya uji atau haruskah saya melihat Masalah untuk memperbaikinya?

@pinguin999
Tidak ada yang perlu diuji.
Ini terkait dengan kode pathlib yang ditambahkan (lihat stacktrace Anda).
Akan lebih bagus jika Anda bisa memberikan PR dengan perbaikan.

@pinguin999 Saya tidak yakin apa penyebab kesalahan ini, tetapi saya menduga bahwa spesifikasi kelas pengujian ( ::WebServiceTest ) mungkin itu.

Saya membuat cabang di mana bagian itu dipisah sebelum menjalankan tes dan akan sangat bagus jika Anda bisa mencobanya, karena saya tidak memiliki mesin windows dengan pengaturan dev yang tersedia. Anda dapat menemukannya di cabang oserror_pathlib di garpu saya di https://github.com/voidus/pytest-Django.

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

Ya, ternyata ":" di arg bail out di Windows.
Saya pikir tambalan Anda baik-baik saja, saya telah membuat https://github.com/pytest-dev/pytest-Django/pull/648 dengannya.

Hai
maaf saya sedang libur.
Saya memperbarui ke 3.4.3 dan berfungsi.

Terima kasih

# hapus baris kode ini ====== 'module_name',
dari daftar INSTALLED_APPS

Nah ini juga terjadi pada saya.
Pertama-tama pastikan Anda memulai aplikasi di folder proyek
untuk misalnya:
"situs web proyek awal django-admin
situs web cd
musik startapp django-admin"

Apakah halaman ini membantu?
0 / 5 - 0 peringkat