@Kirill-Gorelov
С ума с IT

Пишу класс + тест, не могу понять почему все ломается?

Привет парни, пишу класс и хочу его протестировать.
Есть класс. От сюда убрал все лишнее, главное понять смысл.
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
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект