1 回答
TA贡献1876条经验 获得超5个赞
理想情况下,测试应在“清洁环境”中进行。因此,与其使用相对导入运行脚本测试,不如编写一个以模块形式在本地安装项目。然后,您可以编写单独的测试,您可以在其中执行。setup.pyfrom mymodule import script1.script1
如果你走这条路,你需要决定一个项目结构。没有最好的结构(见这里)。举个例子,这是我的典型结构:
├── src/
│ ├── script1/
│ │ └── script1.py
│ └── script2/
│ └── script2.py
├── tests/
│ ├── test_script1.py
│ └── test_script2.py
└── venv/
以及如下 setup.py:
import os
from setuptools import find_packages, setup
# load desc from readme
def read(fname):
return open(os.path.join(os.path.dirname(__file__), fname)).read()
setup(
name="mymodule",
version="0.0.1",
author="you",
author_email="<you@you.com>",
description=("short description"),
license="<none>",
packages=find_packages("src"),
package_dir={"": "src"},
long_description=read("README.md"),
classifiers=[
"Development Status :: 2 - Pre-Alpha",
"Topic :: Utilities",
# "License :: OSI Approved :: MIT License",
],
install_requires=[],
)
通过此示例,您现在可以运行以安装 mymodule,然后使用 运行所有测试。这不仅可以测试您的测试,还可以检查您的软件包是否正确安装/可安装。使用虚拟环境时,将安装在此处而不是整个系统。
最后,您可以在所有文件中使用相对导入,因为您将拥有一个顶级模块“mymodule”,并且您的错误将消失。python setup.py installpytest testssetup.py
PS:如果您不喜欢导入,可以在目录中写入文件,以便能够做到甚至script1.script1__init__.pyfrom mymodule import script1from mymodule import ClassFromScript1
添加回答
举报
