Как покрыть мой код Python с помощью unittest - PullRequest
0 голосов
/ 15 октября 2019

У меня есть некоторый код на Python, и я хочу охватить его юнит-тестом. Мой простой код:

import os
import glob


class GitRepoParser:

    def __init__(self, repo_dir: str):
        self.repo_dir = repo_dir

    def get_folder_path(self, service_name: str) -> str:
        dir_path = '{path}/configuration/settings/{name}'.format(
            path=self.repo_dir,
            name=service_name
        )

        return dir_path

    def create_new_service(self, service_name: str, service_version: str):
        dir_path = self.get_folder_path(service_name)

        if os.path.isdir(dir_path):
            return

        os.makedirs(dir_path)
        property_file = '{folder}/{name}-deployment.properties'.format(
            folder=dir_path,
            name=service_name
        )

        current_path = os.path.dirname(__file__)
        template_path = os.path.join(
            current_path, '..', 'file_templates/deployment.properties'
        )

        if not os.path.isfile(template_path):
            return

        template_file = open(template_path, 'r')
        with open(property_file, 'w') as properties:
            for line in template_file:
                # Create parser for this code part
                value = line.strip().replace(
                    '%service_name%', service_name
                )

                properties.write(value + '\n')

        template_file.close()

Помогите мне создать несколько юнит-тестов для этих строк кода. Я создаю некоторый класс GitRepoParserTest в своих тестах на python:

class GitRepoParserTest(unittest.TestCase):
    def setUp(self):
        self.app = create_app('testing')
        self.app_context = self.app.app_context()
        self.app_context.push()
        self.parser = GitRepoParser('/path-to-download')

    def test_get_folder_path(self):
        folder_path = self.parser.get_folder_path(service_name='oleg-service')
        self.assertIsInstance(folder_path, str)

    def test_create_new_service(self):
        pass

Но я не понимаю, как мне нужно писать тесты для функции create_new_service.

Пожалуйста, помогите мне.

Спасибо.

...