반응형
단위 테스트 실행을위한 Python 패키지 구조, setup.py
패키지 구조를 올바르게 구성하고 있는지 또는 단위 테스트를 실행하려고 할 때 오류가 발생하기 때문에 setup.py에서 올바른 옵션을 사용하고 있는지 잘 모르겠습니다.
다음과 같은 구조가 있습니다.
/project
/bin
/src
/pkgname
__init__.py
module1.py
module2.py
/tests
__init__.py
test1.py
test2.py
내 setup.py는 다음과 같습니다.
#!/usr/bin/env python
from setuptools import setup, find_packages
setup(version='0.1',
description='Trend following library',
author='Nate Reed',
author_email='nate@natereed.com',
packages=find_packages(),
install_requires=['numpy'],
test_suite="tests",
)
'python setup.py test'를 실행하면 다음과 같은 결과가 나타납니다.
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'
테스트 이름이 모듈 이름과 일치해야합니까? 패키지 구조에서 따라야 할 다른 규칙이 있습니까?
시행 착오를 거쳐이 문제의 원인을 찾았습니다. 테스트 이름은 모듈 이름과 일치해야합니다. "foo_test.py"테스트가있는 경우 해당 모듈 foo.py가 있어야합니다.
패키지 구조 구성에 대한 몇 가지 지침을 발견 하여 패키지를 내가 확신하는 구조로 재구성하는 데 도움이되었습니다.
ReferenceURL : https://stackoverflow.com/questions/6164004/python-package-structure-setup-py-for-running-unit-tests
반응형
'programing tip' 카테고리의 다른 글
과학적 표기법없이 SQL 서버에서 float를 varchar로 변환 (0) | 2020.12.27 |
---|---|
객체, rvalue 참조, const 참조 간의 과부하 해결 (0) | 2020.12.26 |
Linux에서 iOS 에뮬레이트 / 시뮬레이트 (0) | 2020.12.26 |
GetHashCode를 올바르게 구현 (0) | 2020.12.26 |
Scala.React의 상태는 어떻습니까? (0) | 2020.12.26 |