def create_test(project_name, test_name): test_content = ( "\n" "description = ''\n\n" "tags = []\n\n" "pages = []\n\n\n" "def setup(data):\n" " pass\n\n\n" "def test(data):\n" " pass\n\n\n" "def teardown(data):\n" " pass\n\n") errors = [] project = Project(project_name) if test_name in project.tests(): errors.append('A test with that name already exists') else: errors = validate_project_element_name(test_name) if not errors: project.create_packages_for_element(test_name, project.file_types.TEST) path = Test(project_name, test_name).path with open(path, 'w', encoding='utf-8') as f: f.write(test_content) print('Test {} created for project {}'.format(test_name, project_name)) return errors
def duplicate_test(project, name, new_name): errors = [] old_path = Test(project, name).path new_path = Test(project, new_name).path if name == new_name: errors.append('New test name cannot be the same as the original') elif not os.path.isfile(old_path): errors.append('Test {} does not exist'.format(name)) elif os.path.isfile(new_path): errors.append('A test with that name already exists') else: errors = validate_project_element_name(new_name) if not errors: try: Project(project).create_packages_for_element(new_name, Project.file_types.TEST) file_manager.create_directory(path=os.path.dirname(new_path), add_init=True) shutil.copyfile(old_path, new_path) # duplicate data file if present old_data_path = os.path.splitext(old_path)[0] + '.csv' new_data_path = os.path.splitext(new_path)[0] + '.csv' if os.path.isfile(old_data_path): shutil.copyfile(old_data_path, new_data_path) except: errors.append('There was an error creating the new test') return errors
def create_page(project_name, page_name): errors = [] project = Project(project_name) if page_name in project.pages(): errors.append('A page with that name already exists') else: errors = validate_project_element_name(page_name) if not errors: project.create_packages_for_element(page_name, project.file_types.PAGE) with open(Page(project_name, page_name).path, 'w') as f: f.write('') return errors
def create_page(project_name, page_name): errors = [] page_name = page_name.strip().replace(' ', '_') project = Project(project_name) if page_name in project.pages(): errors.append('A page with that name already exists') else: errors = validate_project_element_name(page_name) if not errors: project.create_packages_for_element(page_name, 'page') with open(Page(project_name, page_name).path, 'w') as f: f.write('') return errors
def rename_page(project_name, page_name, new_page_name): errors = [] project = Project(project_name) if page_name not in project.pages(): errors.append('Page {} does not exist'.format(page_name)) else: errors = validate_project_element_name(new_page_name) if not errors: old_path = Page(project_name, page_name).path new_path = Page(project_name, new_page_name).path project.create_packages_for_element(new_page_name, project.file_types.PAGE) errors = file_manager.rename_file(old_path, new_path) return errors
def rename_suite(project, suite_name, new_suite_name): errors = [] project_obj = Project(project) if suite_name not in project_obj.suites(): errors.append(f'Suite {suite_name} does not exist') else: errors = validate_project_element_name(new_suite_name) if not errors: old_path = Suite(project, suite_name).path new_path = Suite(project, new_suite_name).path project_obj.create_packages_for_element(new_suite_name, Project.file_types.SUITE) errors = file_manager.rename_file(old_path, new_path) return errors
def rename_suite(project, suite_name, new_suite_name): errors = [] project_obj = Project(project) if suite_name not in project_obj.suites(): errors.append('Suite {} does not exist'.format(suite_name)) else: new_suite_name = new_suite_name.strip().replace(' ', '_') errors = validate_project_element_name(new_suite_name) if not errors: old_path = Suite(project, suite_name).path new_path = Suite(project, new_suite_name).path project_obj.create_packages_for_element(new_suite_name, 'suite') errors = file_manager.rename_file(old_path, new_path) return errors
def rename_page(project_name, page_name, new_page_name): errors = [] project = Project(project_name) new_page_name = new_page_name.strip().replace(' ', '_') if page_name not in project.pages(): errors.append('Page {} does not exist'.format(page_name)) else: errors = validate_project_element_name(new_page_name) if not errors: old_path = Page(project_name, page_name).path new_path = Page(project_name, new_page_name).path project.create_packages_for_element(new_page_name, 'page') errors = file_manager.rename_file(old_path, new_path) return errors
def create_test(project_name, test_name): test_content = ('\n' 'def test(data):\n' ' pass\n') errors = [] project = Project(project_name) if test_name in project.tests(): errors.append('A test with that name already exists') else: errors = validate_project_element_name(test_name) if not errors: project.create_packages_for_element(test_name, project.file_types.TEST) path = Test(project_name, test_name).path with open(path, 'w', encoding='utf-8') as f: f.write(test_content) print(f'Test {test_name} created for project {project_name}') return errors
def rename_test(project_name, test_name, new_test_name): errors = [] project = Project(project_name) if test_name not in project.tests(): errors.append('Test {} does not exist'.format(test_name)) else: errors = validate_project_element_name(new_test_name) if not errors: old_path = Test(project_name, test_name).path new_path = Test(project_name, new_test_name).path project.create_packages_for_element(new_test_name, project.file_types.TEST) errors = file_manager.rename_file(old_path, new_path) # try to rename data file in /tests/ folder old_data_path = os.path.splitext(old_path)[0] + '.csv' new_data_path = os.path.splitext(new_path)[0] + '.csv' if os.path.isfile(old_data_path): errors = file_manager.rename_file(old_data_path, new_data_path) return errors
def create_suite(project_name, suite_name): suite_content = ('\n' 'browsers = []\n\n' 'environments = []\n\n' 'processes = 1\n\n' 'tests = []\n') errors = [] project = Project(project_name) if suite_name in project.suites(): errors.append('A suite with that name already exists') else: errors = validate_project_element_name(suite_name) if not errors: project.create_packages_for_element(suite_name, project.file_types.SUITE) with open(Suite(project_name, suite_name).path, 'w', encoding='utf-8') as f: f.write(suite_content) print(f'Suite {suite_name} created for project {project_name}') return errors
def create_suite(project_name, suite_name): suite_content = ('\n' 'browsers = []\n\n' 'environments = []\n\n' 'processes = 1\n\n' 'tests = []\n') errors = [] project = Project(project_name) if suite_name in project.suites(): errors.append('A suite with that name already exists') else: errors = validate_project_element_name(suite_name) if not errors: project.create_packages_for_element(suite_name, 'suite') with open(Suite(project_name, suite_name).path, 'w') as f: f.write(suite_content) print('Suite {} created for project {}'.format(suite_name, project_name)) return errors
def duplicate_page(project, name, new_name): errors = [] old_path = Page(project, name).path new_path = Page(project, new_name).path if name == new_name: errors.append('New page name cannot be the same as the original') elif not os.path.isfile(old_path): errors.append('Page {} does not exist'.format(name)) elif os.path.isfile(new_path): errors.append('A page with that name already exists') else: errors = validate_project_element_name(new_name) if not errors: try: Project(project).create_packages_for_element(new_name, Project.file_types.PAGE) shutil.copyfile(old_path, new_path) except: errors.append('There was an error creating the new page') return errors
def test_validate_project_element_name_max_length(self, name): errors = validate_project_element_name(name) assert errors == ['Maximum name length is 150 characters']
def test_validate_project_element_name_invalid_chars(self, name): errors = validate_project_element_name(name) assert errors == ['Only letters, numbers and underscores are allowed']
def test_validate_project_folder_name_empty(self, name): errors = validate_project_element_name(name, isdir=True) assert errors == ['Folder name cannot be empty']
def test_validate_project_element_name_empty(self, name): errors = validate_project_element_name(name) assert errors == ['File name cannot be empty']
def test_validate_project_element_name_empty_dir(self, name): errors = validate_project_element_name(name) assert errors == ['Directory name cannot be empty']
def test_validate_project_element_name(self, name): errors = validate_project_element_name(name) assert errors == []