Steps | Command |
---|---|
Create Virtual Env | python3 -m venv [env_name] |
Then activate the Env | source [env_name]/bin/activate |
Install dependency | pip install -r requirements.txt |
Create Django Project | django-admin startproject [name] |
Check pip packages | pip list |
Create utils directory | python manage.py iwanttotest |
Create App for test writing | python manage.py startapp [name] |
create boiler plate | python manage.py createtest -t [name for csv,url,methods] -X [get/post] -u [resource/relative api path] -a [app name] |
Test | python manage.py test |
Test | python manage.py test [app_name] |
Extra | |
Deactivate | deactivate |
Remove Env | rm -r [env_name]/ |
View Details
STATIC_URL = '/static/'
TEST_PAYLOAD_PATH = str(BASE_DIR) + '/utils/test/'
TEST_DATA_PATH = TEST_PAYLOAD_PATH + 'data/'
TEST_RUNNER = 'cmtestrunner.CMTestRunner'
TEST_APPS = ()
LOCALE_DIR = str(BASE_DIR) + '/locale'
TEST_SERVER = ''
TEST_ENV = 'SIT'
AUTH_BASE_URL = ''
View Code
import os, sys
import json
app_name = ""
def run_cmd(cmd):
os.system(cmd)
def read_json(fileName):
with open(fileName, 'r') as file:
data = json.load(file)
return data
def go_deep(body):
if isinstance(body,dict):
if 'item' in body:
go_deep(body['item'])
else:
b_t = body['name']
b_x = body['request']['method']
b_u = "/"+"/".join(body['request']['url']['path'])
temp_json = {
"-t" : b_t,
"-X" : b_x,
"-u" : b_u,
"-a" : app_name
}
cmruntester_cmd(temp_json)
# print(temp_json)
if isinstance(body,list):
if len(body) != 0:
for i in body:
go_deep(i)
def parse_postman(fileName):
go_deep(read_json(fileName))
def write_in_settings(project_name,index,text):
with open(project_name+"/settings.py","r") as file:
contents = file.readlines()
# contents.insert(39, " 'utils',\n 'cmtestrunner',\n")
contents.insert(index," '"+text+"',\n")
with open(project_name+"/settings.py","w") as file:
contents = "".join(contents)
file.writelines(contents)
# create utils dir
def iwanttotest_cmd(project_name, app_name, base_url, base_env ):
try:
# dir_name = os.getcwd().split("/")
# project_name = dir_name[len(dir_name)-1]
with open(project_name+"/settings.py","a") as file:
temp = "\nTEST_PAYLOAD_PATH = str(BASE_DIR) + '/utils/test/'\nTEST_DATA_PATH = TEST_PAYLOAD_PATH + '/data/'\nTEST_RUNNER = 'cmtestrunner.CMTestRunner'\nTEST_APPS = ()\nLOCALE_DIR = str(BASE_DIR) + '/locale'\nTEST_SERVER = ''\nTEST_ENV = '"+base_env+"'\n"
temp = temp + app_name.upper() +"_BASE_URL = '"+base_url+"'"
file.write(temp)
run_cmd("env/bin/python3 manage.py iwanttotest")
except:
print("Failed to created")
write_in_settings(project_name, 40, 'utils')
# create app
def create_app_cmd(app_name):
run_cmd("env/bin/python3 manage.py startapp "+app_name)
# remove files except __init__.py
def rm_cmd(app_name):
src_path = app_name+"/"
dest_path = "./"
file_name = "__init__.py"
run_cmd("mv "+ src_path + file_name +" "+ dest_path)
run_cmd("rm -r "+ app_name +"/*")
run_cmd("mv "+file_name +" "+ src_path)
# gen method.py api.py and .csv
def cmruntester_cmd(data):
parse_data = " ".join([ key +" "+ data[key] for key in data])
# print(parse_data)
cmd = "env/bin/python3 manage.py createtest "+parse_data
print(data['-t'],end=" ")
run_cmd(cmd)
def setup_lib(project_name,env_mode):
run_cmd("django-admin startproject "+project_name)
os.chdir(project_name)
# by default virtual env is off, to on pass value 1 in argv
if not env_mode:
run_cmd("python3 -m venv env")
run_cmd("env/bin/pip3 install cmtestrunner")
# else:
# run_cmd("pip install cmtestrunner")
write_in_settings(project_name,39,'cmtestrunner')
'''
user need to things to do
1. activate virtual env if have any
2. postman json export
'''
if __name__ == "__main__":
postman_json_file = "../filename.json"
project_name = "name"
app_name = "name"
base_url = "url"
base_env = "SIT/UAT"
env_mode = 0
if len(sys.argv)>1:
env_mode = int(sys.argv[1])
setup_lib(project_name,env_mode)
iwanttotest_cmd(project_name, app_name, base_url,base_env)
create_app_cmd(app_name)
rm_cmd(app_name)
parse_postman(postman_json_file)
- Put this in at the bottom of "env/bin/acitvate"
export DJANGO_SETTINGS_MODULE=mysite.settings
- Never Forget to put app name in django settings.
- env/lib/python3.8/site-packages/cmtestrunner/management/commands/iwanttotest.py
str(DIR) +"/..."