我正在寻找一种从另一个文件夹导入函数的简单方法:
|--mylib
| |--__init__.py
| |--mylib2.py
|
|--mytest
| |--other.py
| |--test_one.py
|
|--mymain.py
Run Code Online (Sandbox Code Playgroud)
mylib2.py
def suma(a,b):
return a+b
Run Code Online (Sandbox Code Playgroud)
mymain.py
from mylib.mylib2 import suma
def main():
a=3
b=4
c=suma(a,b)
print(c)
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
其他.py
from mylib.mylib2 import suma
c=suma(1,2)
print(c)
Run Code Online (Sandbox Code Playgroud)
测试一.py
from mylib.mylib2 import suma
def test_nothing():
assert True
def test_crash():
e=0
#d=30/e
assert True
Run Code Online (Sandbox Code Playgroud)
由于某种原因,我无法正常从 other.py 调用 suma (因为我不知道如何正确地将 mylib2.py 包含在 mytest 文件夹中的文件中,但按照这个答案我可以这样做
python3 -m mytest.other
3
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何运行 pytest(包括库)
如果我进行 pytest 我会收到一条消息
from mylib.mylib2 import suma
E ModuleNotFoundError: No module named 'mylib'
Run Code Online (Sandbox Code Playgroud)
如何以简单的方式运行测试?
TL;DR:您还应该添加__init__.py内部mytest文件夹。
解释:
module和之间的概念很容易被误解package。即使在使用 Python 编程多年之后,我仍然不确定我是否完全理解它们。如果我错了,请纠正我。
如果mytest文件夹中没有__init__.py,解释器在执行命令时会认为mylib是一个包,类似于numpy, 。搜索过程基于您的. 但是,从技术上讲,您没有安装软件包,因此解释器将引发如下错误:。pandaspytestPYTHONPATHmylib ModuleNotFoundError: No module named 'mylib'
通过添加__init__.py, pytest 将认为mylib和mytest是普通模块,因此您可以mylib.mylib2照常导入。
进一步阅读:
Pytest:如何解决测试文件夹中缺少 __init__.py 的问题?
| 归档时间: |
|
| 查看次数: |
537 次 |
| 最近记录: |