Skip to content

Commit 6ee7e1d

Browse files
committed
pytest
1 parent 8d75c08 commit 6ee7e1d

3 files changed

Lines changed: 59 additions & 23 deletions

File tree

tests/conftest.py

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
import pytest
22
import pytest_asyncio
3+
from db.models import Base, News
34
from sqlalchemy import create_engine
4-
from sqlalchemy.ext.asyncio import create_async_engine, async_sessionmaker
5+
from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine
56
from sqlalchemy.orm import sessionmaker
67

7-
from db.models import Base, News
8-
9-
108
DATABASE_SYNC_URL = "sqlite:///:memory:"
119
DATABASE_ASYNC_URL = "sqlite+aiosqlite:///:memory:"
1210

@@ -35,18 +33,28 @@ async def async_session():
3533
@pytest.fixture
3634
def news():
3735
test_news = {
38-
'url': 'https://panorama.pub/test-news',
39-
'title': 'Test Title',
40-
'text': 'Test Text',
41-
'image': None
36+
"url": "https://panorama.pub/test-news",
37+
"title": "Test Title",
38+
"text": "Test Text",
39+
"image": None,
4240
}
4341
return test_news
4442

4543

4644
@pytest_asyncio.fixture
4745
async def news_list(async_session):
48-
first_news = News(url="https://panorama.pub/test-news_1", title="Test Title 1", image=None, text="Ttest Text_1")
49-
second_news = News(url="https://panorama.pub/test-news_2", title="Test Title 2", image=None, text="Ttest Text_2")
46+
first_news = News(
47+
url="https://panorama.pub/test-news_1",
48+
title="Test Title 1",
49+
image=None,
50+
text="Ttest Text_1",
51+
)
52+
second_news = News(
53+
url="https://panorama.pub/test-news_2",
54+
title="Test Title 2",
55+
image=None,
56+
text="Ttest Text_2",
57+
)
5058

5159
async_session.add_all([first_news, second_news])
5260
await async_session.commit()

tests/test_bot_storage.py

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import pytest
2-
3-
from bot.bot_storage import get_last_sent_id, save_last_sent_news_id, get_news_after_id, get_all_users
2+
from bot.bot_storage import (
3+
get_all_users,
4+
get_last_sent_id,
5+
get_news_after_id,
6+
save_last_sent_news_id,
7+
)
48

59

610
@pytest.mark.asyncio
@@ -9,29 +13,43 @@ async def test_get_last_sent_id(async_session):
913
chat_id = 100
1014

1115
last_id = await get_last_sent_id(chat_id, async_session)
12-
assert last_id == 0, "id последней отпрвленной новости должен быть равен 0, если нет отправленных новостей"
16+
assert (
17+
last_id == 0
18+
), "id последней отпрвленной новости должен быть равен 0, если нет отправленных новостей"
1319

14-
await save_last_sent_news_id(chat_id=chat_id, last_id=10, session=async_session)
20+
await save_last_sent_news_id(
21+
chat_id=chat_id, last_id=10, session=async_session
22+
)
1523
last_id = await get_last_sent_id(chat_id, async_session)
16-
assert last_id == 10, "id последней отпрвленной новости должен быть равен 10"
24+
assert (
25+
last_id == 10
26+
), "id последней отпрвленной новости должен быть равен 10"
1727

1828

1929
@pytest.mark.asyncio
2030
async def test_get_news_after_id(async_session, news_list):
2131
"""Получение новостей"""
2232
news = await get_news_after_id(last_id=0, session=async_session)
2333
assert len(news) == 2, "Должно быть получено 2 новости"
24-
assert news[0].title == "Test Title 1", "Заголовок первой новости должен быть 'Test Title 1'"
25-
assert news[1].title == "Test Title 2", "Заголовок второй новости должен быть 'Test Title 2'"
34+
assert (
35+
news[0].title == "Test Title 1"
36+
), "Заголовок первой новости должен быть 'Test Title 1'"
37+
assert (
38+
news[1].title == "Test Title 2"
39+
), "Заголовок второй новости должен быть 'Test Title 2'"
2640

2741

2842
@pytest.mark.asyncio
2943
async def test_get_all_users(async_session):
3044
"""Получение пользователей"""
31-
await save_last_sent_news_id(chat_id=111, last_id=11, session=async_session)
32-
await save_last_sent_news_id(chat_id=222, last_id=22, session=async_session)
45+
await save_last_sent_news_id(
46+
chat_id=111, last_id=11, session=async_session
47+
)
48+
await save_last_sent_news_id(
49+
chat_id=222, last_id=22, session=async_session
50+
)
3351

3452
users = await get_all_users(async_session)
3553
assert len(users) == 2, "Должно быть 2 пользователя в базе"
3654
assert users[0] == 111, "id первого юзера должен быть 111"
37-
assert users[1] == 222, "id второго юзеера должен быть 222"
55+
assert users[1] == 222, "id второго юзеера должен быть 222"

tests/test_spider_storage.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,16 @@ def test_save_and_check_news(session, news):
55
"""Проверяет что новостей нет в базе,
66
сохранение новости
77
и новость появилась в базе после сохранения."""
8-
assert not is_news_exists(news['url'], session), "Перед сохраением новой новости её не должно быть в базе"
9-
save_news(news["url"], news["title"], news['image'], news["text"], session=session)
10-
assert is_news_exists(news["url"], session), "Новость должна появиться в базе после сохранения"
8+
assert not is_news_exists(
9+
news["url"], session
10+
), "Перед сохраением новой новости её не должно быть в базе"
11+
save_news(
12+
news["url"],
13+
news["title"],
14+
news["image"],
15+
news["text"],
16+
session=session,
17+
)
18+
assert is_news_exists(
19+
news["url"], session
20+
), "Новость должна появиться в базе после сохранения"

0 commit comments

Comments
 (0)