# Created by Egor Kostan.
# GitHub: https://github.com/ikostan
# LinkedIn: https://www.linkedin.com/in/egor-kostan/
# FUNDAMENTALS STRINGS
import unittest
import allure
from utils.log_func import print_log
from kyu_7.help_bob_count_letters_and_digits.count_letters_and_digits import count_letters_and_digits
[docs]@allure.epic('7 kyu')
@allure.parent_suite('Beginner')
@allure.suite('Fundamentals')
@allure.sub_suite('Unit Tests')
@allure.feature('String')
@allure.story('Help Bob count letters and digits.')
@allure.tag('FUNDAMENTALS', 'STRINGS')
@allure.link(url='https://www.codewars.com/kata/5738f5ea9545204cec000155/train/python',
name='Source/Kata')
class CalculateTestCase(unittest.TestCase):
"""
Testing count_letters_and_digits function
"""
[docs] def test_calculate(self):
allure.dynamic.title("Testing count_letters_and_digits function")
allure.dynamic.severity(allure.severity_level.NORMAL)
allure.dynamic.description_html('<h3>Codewars badge:</h3>'
'<img src="https://www.codewars.com/users/myFirstCode'
'/badges/large">'
'<h3>Test Description:</h3>'
"<p>Test a method that can determine how many letters "
"and digits are in a given string.</p>")
test_data = [
('n!!ice!!123', 7),
('de?=?=tttes!!t', 8),
('', 0),
('!@#$%^&`~.', 0),
('u_n_d_e_r__S_C_O_R_E', 10),
]
for s, expected in test_data:
actual_result = count_letters_and_digits(s)
with allure.step("Enter string ({}) and verify the "
"expected output ({}) vs actual result ({})".format(s,
expected,
actual_result)):
print_log(s=s,
expected=expected,
result=actual_result)
self.assertEqual(expected,
actual_result)