我一直在寻找不同的问题,而且pytest的相对路径似乎有问题。
我在任何地方寻找的解决方案是在测试类上导入模块时添加项目的路径,或者使用python -m pytest
在两种情况下,我都遇到“没有命名模块的问题”
python -m pytest
======================================================================================== test session starts =========================================================================================
platform linux2 -- Python 2.7.16, pytest-3.10.1, py-1.7.0, pluggy-0.8.0
rootdir: /home/patrick/PycharmProjects/ScrapperController, inifile:
collected 0 items / 1 errors
=============================================================================================== ERRORS ===============================================================================================
___________________________________________________________________________ ERROR collecting app/tests/bank_model_test.py ____________________________________________________________________________
ImportError while importing test module '/home/patrick/PycharmProjects/ScrapperController/app/tests/bank_model_test.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/usr/lib/python2.7/dist-packages/six.py:709: in exec_
exec("""exec _code_ in _globs_, _locs_""")
app/tests/bank_model_test.py:2: in <module>
from app.bank_xpath import BankXpath
E ImportError: No module named app.bank_xpath
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
====================================================================================== 1 error in 0.07 seconds =======================================================================================
我的项目的结构是
project
project/app
project/app/bank_xpath.py
project/app/controller.py
project/tests
project/tests/bank_model_tests.py
这是我在类中导入模块的部分代码。
import unittest
from app.bank_xpath import BankXpath
from app.dictionary import ERRORS
class TestingBanksModels(unittest.TestCase):
def test_bank_wrong_iso(self):
bankObject = create_correct_bank()
bankObject.fromCurrency = "Danish Krones"
error = [ERRORS["wrong_from_currency"]]
self.assertEqual(bankObject.validate(), error)
答案 0 :(得分:0)
如果您使用的是python2,我相信您需要在python -c 'import sys; print(sys.path)'
目录中名为__init__.py
的文件(可以为空)中进行导入。我认为这不是python3中的问题。