Her Cython kitaplığında bir model ve diğer bileşenlere sahip bir projem var. Denemeler yaptım ve bu para cezasını kapsam dahilinde çalıştırabilirim, ancak sadece test kodunun kapsama bilgilerini aldım (test kodunun çağırdığı kütüphaneler değil). Hata ayıklama izleme işlemini kapsam dahilinde kullanmayı denedim, ancak kitaplık kodlarından herhangi birini okuma girişimi göstermiyor (İzleme veya İzleme için hiçbir giriş almadım). Cython.coverage eklentisinin tamamı için linetrace, CYTHON_TRACE = 1 ve .coveragerc öğelerinin tümü açık. Model.c kodunu \ 'a kopyalamaya çalıştım ama bu yardımcı olmadı.Coverage.py/Cython - Cython kütüphanesi, karmaşık olmayan proje ile izlenemeyen
include '..\\submodel.pxi'
:
\model.pyd
\setup.py
\src\models\windows\model.pyx
\src\models\windows\model.c
\src\models\submodel.pxi
\tests\models\test_model.py
pencerelerde kodu \ model.pyx böyle \ src \ modellerinden kod platform bağımsız parçalardan oluşan bir dizi içerir: Burada
(kısmi) projesi yapıdırsetup.py
python setup.py build_ext --inplace
ile \ çalıştırılan ve görünümü de şu:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize
from Cython.Compiler.Options import directive_defaults
import numpy
# Needed for line_profiler - disable for production code
directive_defaults['linetrace'] = True
directive_defaults['binding'] = True
setup(
ext_modules = cythonize([
Extension("model",
["src\models\windows\model.pyx"]
#,extra_compile_args = ["-O3"]
# CYTHON_TRACE required for coverage and line_profiler. Remove for release.
,define_macros=[('CYTHON_TRACE', '1')]
)
])
)
unittests İşte (etkin eklenti hata ayıklama ile) kapsama rapor çıkışı
coverage run -m unittest discover
sahip modellerde \ \ testlerden çalıştırılır. test_model burada bildirilen değil model.pyx ve submodel.pxi kod sürü çalıştıran:
Loaded plugin 'Cython.Coverage': <Cython.Coverage.Plugin object at 0x02F2AA30>
Name Stmts Miss Cover
--------------------------------------------
test_model.py 40 1 98%
--------------------------------------------
TOTAL 40 1 98%
testi yüksek dizinden PYD dosyasını çıkarmak üzere bu kod parçacığı ile başlar Her ünite:
sys.path.append('..\\..\\')
from model import Model
...
Bunun proje yapısıyla ilgili bir şey olduğuna eminim ve test kablolarını yüklemek için kaynak dosyaları test dizinlerine kopyalamaktan sakınmıyorum ama bunun gerçekleşmesi için doğru kombinasyonu tam olarak anlayamıyorum . Tüm yardımlar kabul edilir.