本文介绍了Python3 - Pytest 目录结构和导入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时删除!!

我有以下项目文件(使用 Python3):

I have the following project files (using Python3):

pyproj
├── __init__.py
├── main.py
├── module1.py
├── module2.py
└── tests
    ├── __init__.py
    └── test_module.py

module1 不包含导入.

module1 contains no imports.

module2 从模块 1 导入如下:

module2 imports from module 1 as follows:

import module1

main.py 从 module1 和 module2 导入如下:

main.py imports from module1 and module2 as follows:

from module1 import *
from module2 import *

我希望 tests/test_module 能够从 module2 和 module1 导入,并且能够使用 pyproj 目录中的 pytest 运行它.但是尝试使用以下方法导入 module2:

I would like tests/test_module to be able to import from module2 and from module1, and to be able to run it using pytest from the pyproj directory. However attempting to import module2 using:

 from ..module2 import *

在从 pyproj 目录或 tests 目录运行 pytest 时会导致以下错误:

causes the following error when running pytest from either the pyproj directory or the tests directory:

tests/test_module.py:1: 在 中从 ..module2 导入 *module2.py:1: 在<module>导入模块1E 导入错误:没有名为module1"的模块

问题似乎出在 module1 正在导入 module2 时.python3 main.py 但是可以正常运行.

The problem seems to be when module1 is importing module2. python3 main.py runs correctly however.

我尝试了许多更改,但似乎没有一个可以让 main.py 和测试正常工作.构建项目并适当导入文件以执行此操作的正确方法是什么?

I've tried numerous changes, but none seem to allow both main.py and the tests to work correctly. What is the correct way to structure the project and appropriately import files to do this?

推荐答案

我的解决方案可能不是最佳实践,但经过一些试验后可行:

My solution may not be best practice, but works, after a bit of experimenting:

  • 使用 from myproj.module2 import something

  • use from myproj.module2 import something

使 PYTHONPATH 包含 myproj

make PYTHONPATH include myproj

在测试目录中使用init.py

use init.py in tests directory

我的实验仓库在这里:https://github.com/epogrebnyak/question-package-structure-for-testing/tree/master/which

这篇关于Python3 - Pytest 目录结构和导入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

1403页,肝出来的..

09-07 17:33