我正在为 model_mommy 编写测试,这是 django 非常有用的假对象。我想要一种让脚本自我维持的快速方法,它只需要为您的 django 项目中的自定义应用程序编写测试。现在它可能会为你使用的所有应用程序找到并编写测试,比如auth
你tagging
没有编写的和。如果您使用 mommy(或更改为混音器,它应该也可以工作),您可以使用该脚本。什么是os.walk
查找哪些应用程序实际上是我的应用程序?谢谢
问问题
28 次
1 回答
0
class ModelRunner(object):
def __init__(self, starting_path):
self.start_path = starting_path
@property
def model_files(self):
model_files = []
for root, dirs, files in os.walk(self.start_path):
for f in files:
if self.is_regular_models_file(f):
filename = os.path.join(root, f)
model_files.append(filename)
for d in dirs:
if self.is_models_dir(d):
model_files.extend(self.get_models_files_from_models_folder(os.path.join(root, d)))
return model_files
def get_models_files_from_models_folder(self, filepath):
for root, _, files in os.walk(filepath):
model_files = []
for f in files:
if f not in ['__init__.py'] and '.pyc' not in f:
filename = os.path.join(root, f)
model_files.append(filename)
return model_files
@property
def apps(self):
apps = []
for f in self.model_files:
apps.append(self.get_app_name_from_file(f))
return apps
def get_app_name_from_file(self, filepath):
def find_models_dir(path):
head, name = os.path.split(path)
return path if name == 'models' else find_models_dir(head)
if self.is_regular_models_file(filepath):
head, _ = os.path.split(filepath)
_, app_name = os.path.split(head)
return app_name
else:
return find_models_dir(filepath)
def is_regular_models_file(self, filepath):
return get_filename(filepath) == 'models.py'
def is_models_dir(self, filepath):
return get_filename(filepath) == 'models'
于 2016-03-23T19:57:08.170 回答