问题描述
master/
|-- __init__.py
|-- app/
|-- auth/
|-- test/
|---- | __ init __.py
|---- | test_A.py
|---- | test_B.py
|---- | test_C.py
所有 test_X.py 导入相同的核心模块:
import unittest
from unittest.mock import patch
import json
from flask_sqlalchemy import sqlAlchemy
from master.app.app import create_app
from master.app.models import setup_db,subject_student,Subject,Student
from master.app.functions import query_a_record
我想知道是否有一种方法可以创建一个导入所有上述模块并将该文件导入每个测试文件的单个文件。我只是想避免代码重复。
我尝试过的:
当然,这些都没有奏效。关于如何只编写一次这些导入并在我的所有测试模块中重用那段代码的任何建议?或者这根本不可能?
解决方法
我建议您深入研究 Python 如何定义和管理命名空间。
至于您的问题,config.py
或 __init__.py
肯定会导入所需的模块,但它们的名称与该命名空间相关联,因此当您在 testX.py
脚本中访问任何这些名称时,它引发 NameError
因为您在不同的命名空间中并且无法识别该名称;你必须用它所属的模块的名称来限定它。
一个典型的函数调用是:
config.unittest.mock.patch()
您可以通过导入所有 config
命名空间轻松避免这种限定:
from config import *