2013-10-05 8 views
6

Wenn ich mit nose spiele und versuche, es mit cython zu kombinieren, kann ich nicht alles so funktionieren, wie ich es möchte. Der Code wird wie folgt organisiert:Organisieren von Cython-Quelldateien und ihre Tests (mit Nosetests)

. 
├── setup.py 
└── src 
    ├── calc 
    │   ├── factorial.py 
    │   ├── __init__.py 
    │   └── tests.py 
    └── cycalc 
     ├── tests.py 
     └── triangle.pyx 

Jede der tests.py enthält zwei Tests, gelingt es, ausfällt. Das Ergebnis der Ausführung von setup.py nosetests ist, dass nur calc/tests.py ausgeführt werden. Wenn ich nach diesem Lauf die beiden Tests in cycalc/tests.py laufen lasse. Wenn ich jedoch alle Build-Dateien säubere, schlägt das fehl, weil cycalc/triangle.pyx nicht in eine gemeinsame Lib eingebaut wurde.

Dann habe ich versucht, das Hinzufügen der Datei src/cycalc/__init__.py, jetzt setup.py nosetests picks up cycalc/tests.py aber es funktioniert nicht das gewünschte Modul zu finden, wurde es in src gelegt.

Wie ordne ich meine Cython-Quelle und Tests an setup.py nosetests finden Sie alles, was es braucht?

Antwort

1

Für nose, um Ihre Tests automatisch auszuführen, sollten Sie sie in einen Ordner namens Tests mit all Ihren Tests hinzufügen. Wie folgt:

. 
|-setup.py 
|-src 
|---calc 
|------factorial.py 
|------__init__.py 
|---cycalc 
|------triangle.pyx 
|------__init__.py 
|-tests 
|---__init__.py 
|---test_calc.py  
|---test_cycalc.py 

Auf diese Weise werden beide Tests automatisch mit allem im gleichen Pfad ausgeführt. Wenn Sie die erstellten Dateien entfernen, müssen Sie ausführen, bevor die Tests wieder funktionieren.

Verwandte Themen