我有以下目录结构
this.ctaEnter.click(() => {
this.removeLoadContent(); //<- error was here
})
Foo.py包含
/home/ubuntu/test/
- Foo/
- Foo.py
- __init__.py
- Test/
- conftest.py
- __init__.py
- Foo/
- test_Foo.py
- __init__.py
conftest.py包含:
class Foo(object):
def __init__(self):
pass
test_Foo.py包含:
import pytest
import sys
print sys.path
from Foo.Foo import Foo
@pytest.fixture(scope="session")
def foo():
return Foo()
如果我运行pytest。在Test文件夹中,然后我收到一个错误,它无法找到模块Foo:
class TestFoo():
def test___init__(self,foo):
assert True
在conftest.py中打印出的sys.path似乎包含/ home / ubuntu / test路径,所以它应该能够找到Foo.py,对吗?
事情是它只有在我将conftest.py移动到下面的文件夹时才有效。
我运行pytest 3.2.2
答案 0 :(得分:3)
错误表示由于int widthMeasureSpec = View.MeasureSpec.makeMeasureSpec(pieCenter.getWidth(), View.MeasureSpec.EXACTLY);
int heightMeasureSpec = View.MeasureSpec.makeMeasureSpec(pieCenter.getHeight(), View.MeasureSpec.EXACTLY);
而无法加载conftest.py
。尝试在foo fixture中移动你的导入,如下所示:
ImportError
答案 1 :(得分:1)
我建议您做的是设置一个虚拟环境,然后在该虚拟环境中安装Foo模块。
pip install virtualenv
virtualenv venv
. ./venv/bin/activate
要安装本地模块,您需要一个setup.py
文件:
from setuptools import setup
setup(
name='foo',
version='0.0.1',
author='My Name',
author_email='my.name@email.com',
packages=['Foo'],
)
然后,您可以在虚拟环境pip install -e .
中安装Foo模块。然后,当您运行测试时,他们将接您的模块。
有关更完整,更长期的方法,请考虑使用需求文件。
我通常将所需的模块放在两个名为requirements.txt
(用于生产)和requirements-test.txt
(用于运行测试)的文件中。
因此,在requirements.txt
中输入您的Foo类所需的内容,例如
json
flask==1.0.2
其中已指定flask
的版本,但未指定json
的版本。然后在requirements-test.txt
文件中输入以下内容:
-r requirements.txt
pytest
-e .
第一行意味着在安装requirements-test.txt
时也会获得所有requirements.txt
。 -e .
是解决您在此处遇到的问题的灵丹妙药,即它安装了Foo模块(以及此存储库中可能包含的任何其他模块)。
要安装requirements-test.txt
文件,请运行:
pip install -r requirements-test.txt
现在您可以运行测试,它将找到您的Foo模块。这也是解决CI问题的好方法。