1# coding=utf-8 2""" 3To support django-behave 4""" 5import os 6import sys 7 8 9def run_as_django_behave(formatter_name, feature_names, scenario_n_options): 10 """ 11 :param formatter_name: for "-f" argument 12 :param feature_names: feature names or folders behave arguments 13 :param scenario_n_options: list of ["-n", "scenario_name"] 14 15 16 :return: True if launched as django-behave. Otherwise false and need to be launched as plain behave 17 """ 18 if "DJANGO_SETTINGS_MODULE" not in os.environ: 19 return False 20 try: 21 import django 22 from django.core.management import ManagementUtility 23 24 from behave_django import __version__ # To make sure version exists 25 django.setup() 26 from django.apps import apps 27 28 if apps.is_installed("behave_django"): 29 base = sys.argv[0] 30 sys.argv = [base] + ["behave", "-f{0}".format(formatter_name)] + feature_names + scenario_n_options 31 print("manage.py " + " ".join(sys.argv[1:])) 32 ManagementUtility().execute() 33 return True 34 except ImportError: 35 return False 36