Привет парни, пишу класс и хочу его протестировать.
Есть класс. От сюда убрал все лишнее, главное понять смысл.
from appmodule.database.db import connection
class Task:
@classmethod
def delete(cls, task_id):
try:
cursor = connection.cursor()
sql = 'DELETE FROM task WHERE task_id = 64'
cursor.execute(sql)
connection.close()
except Exception as e:
print(e)
return False
return True
@classmethod
def getById(cls, task_id):
try:
cursor = connection.cursor()
sql = 'SELECT * FROM task WHERE task_id = %s'
cursor.execute(sql, (task_id))
select_rez = cursor.fetchall()
connection.close()
except Exception as e:
return False
return select_rez
Пишу тесты, опять же укороченный
class TaskTestCase(unittest.TestCase):
def test_1(self):
rez_get = Task.getById(55)
print(rez_get) # всегда возвращает False
def test_deleteTask(self):
print ( "id: " + self .id())
self.assertFalse(Task.delete('string'))
self.assertTrue(Task.delete(65))
Тесты не проходят, пытаюсь вывести исключение, выводит "(0, '')"
.id: __main__.TaskTestCase.test_deleteTask
(0, '')
(0, '')
У меня есть подозрение, что я не так использую pyMysql ....
И еще не могу проверить строку и число, на число))
То есть, даю методу строку и число, не првоеряет.
self.assertFalse(Task.delete('string'))
self.assertFalse(Task.delete(9999999999999))
Делаю проверку
if not task_id.isdigit():
return False
if int(task_id) <= 0:
return False
Выдает исключение
'int' object has no attribute 'isdigit'
и
invalid literal for int() with base 10: 'string'
Стоит python 3.7