python - test - pruebas unitarias odoo
Estructura del paquete Python, setup.py para ejecutar pruebas unitarias (1)
No estoy seguro de estar organizando correctamente la estructura de mi paquete o estoy usando las opciones correctas en setup.py porque recibo errores cuando intento ejecutar pruebas unitarias.
Tengo una estructura como esta:
/project
/bin
/src
/pkgname
__init__.py
module1.py
module2.py
/tests
__init__.py
test1.py
test2.py
Mi setup.py se ve así:
#!/usr/bin/env python
from setuptools import setup, find_packages
setup(version=''0.1'',
description=''Trend following library'',
author=''Nate Reed'',
author_email=''[email protected]'',
packages=find_packages(),
install_requires=[''numpy''],
test_suite="tests",
)
Cuando ejecuto ''python setup.py test'' obtengo:
nate@nate-desktop:~/PycharmProjects/trendfollowing$ sudo python setup.py test
running test
running egg_info
writing requirements to UNKNOWN.egg-info/requires.txt
writing UNKNOWN.egg-info/PKG-INFO
writing top-level names to UNKNOWN.egg-info/top_level.txt
writing dependency_links to UNKNOWN.egg-info/dependency_links.txt
reading manifest file ''UNKNOWN.egg-info/SOURCES.txt''
writing manifest file ''UNKNOWN.egg-info/SOURCES.txt''
running build_ext
Traceback (most recent call last):
File "setup.py", line 11, in <module>
test_suite="tests",
File "/usr/lib/python2.6/distutils/core.py", line 152, in setup
dist.run_commands()
File "/usr/lib/python2.6/distutils/dist.py", line 975, in run_commands
self.run_command(cmd)
File "/usr/lib/python2.6/distutils/dist.py", line 995, in run_command
cmd_obj.run()
File "/usr/lib/python2.6/dist-packages/setuptools/command/test.py", line 137, in run
self.with_project_on_sys_path(self.run_tests)
File "/usr/lib/python2.6/dist-packages/setuptools/command/test.py", line 117, in with_project_on_sys_path
func()
File "/usr/lib/python2.6/dist-packages/setuptools/command/test.py", line 146, in run_tests
testLoader = loader_class()
File "/usr/lib/python2.6/unittest.py", line 816, in __init__
self.parseArgs(argv)
File "/usr/lib/python2.6/unittest.py", line 843, in parseArgs
self.createTests()
File "/usr/lib/python2.6/unittest.py", line 849, in createTests
self.module)
File "/usr/lib/python2.6/unittest.py", line 613, in loadTestsFromNames
suites = [self.loadTestsFromName(name, module) for name in names]
File "/usr/lib/python2.6/unittest.py", line 587, in loadTestsFromName
return self.loadTestsFromModule(obj)
File "/usr/lib/python2.6/dist-packages/setuptools/command/test.py", line 34, in loadTestsFromModule
tests.append(self.loadTestsFromName(submodule))
File "/usr/lib/python2.6/unittest.py", line 584, in loadTestsFromName
parent, obj = obj, getattr(obj, part)
AttributeError: ''module'' object has no attribute ''test1''
¿Los nombres de las pruebas deben coincidir con los nombres de los módulos? ¿Hay otras convenciones que debo seguir en la estructura de mi paquete?
A través de un ensayo y error, encontré la causa de este problema. Los nombres de prueba deben coincidir con los nombres de los módulos. Si hay una prueba "foo_test.py", debe haber un módulo correspondiente foo.py.
Encontré algunas pautas para organizar la estructura del paquete , lo que me ayudó a reorganizar mi paquete en una estructura en la que confiaba.