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()