TestCase, в котором будут:id тест-кейса — рандомное трёхзначное число;TestCase;steps — словарь, куда будут добавляться шаги тест-кейса;result — ожидаемый результат тест-кейса.set_step — добавляет в словарь steps шаг тест-кейса. Принимает два параметра: step_number и step_text. Ключ — это step_number (номер шага), а значение — step_text (текстовое описание шага).delete_step — удаляет шаг из steps по переданному в метод ключу step_number.get_steps — возвращает текущий список шагов.set_result — устанавливает ожидаемый результат в атрибут result по переданному параметру result.get_test_case — печатает текущее состояние тест-кейса.get_test_case:{
'id': 988,
'Название': 'Добавление товара в корзину',
'Шаги': {
1: 'Перейти на сайт',
2: 'Перейти в раздел Товары',
3: 'Нажать кнопку «В корзину» у первого товара'
},
'Ожидаемый результат': 'Товар окажется в корзине'
} from random import randint
from json import JSONEncoder
class TestCase:
def __init__(self, name: str):
self.id = randint(0, 999)
self.name = name
self.steps = dict()
self.result = str()
def set_step(self, step_number: int, step_text: str):
self.steps[step_number] = step_text
def delete_step(self, step_number: int):
if self.steps.get(step_number) is not None:
self.steps.pop(step_number)
def get_steps(self) -> dict:
return self.steps
def set_result(self, result: str):
self.result = result
def get_test_case(self):
current_result = TestCaseEncoder(ensure_ascii=False, indent=4).encode(self)
print(current_result)
return current_result
class TestCaseEncoder(JSONEncoder):
def default(self, o):
json_object = {
'id': o.__dict__.get('id'),
'Название': o.__dict__.get('name'),
'Шаги': o.__dict__.get('steps'),
'Ожидаемый результат': o.__dict__.get('result')
}
return json_object
t = TestCase(name="Test")
t.set_step(1, 'Перейти на сайт')
t.set_step(2, 'Перейти в раздел Товары')
t.set_step(3, 'Нажать кнопку «В корзину» у первого товара')
t.set_result(result='Товар окажется в корзине')
t.get_test_case()
t.delete_step(2)
t.get_test_case()