Size: a a a

testing_in_python

2021 March 03

СС

Сказочный Сникерс... in testing_in_python
```
@dataclass
class Db:
   host: str
   user: str
   password: str
   db_name: str


class Database:

   def __init__(self, db):
       self.host = db.host
       self.user = db.user
       self.password = db.password
       self.db_name = db.db_name


@pytest.fixture
def db_connector(request):
   DATABASES = {
       'alpha': Db(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME),
       'beta': Db(DB_HOST_BETA, DB_USER_BETA, DB_PASSWORD_BETA, DB_NAME_BETA)
   }

   db_option = request.config.getoption('--db')
   db = Database(DATABASES[db_option])
   db.open_connection()

   return db

```
источник

СС

Сказочный Сникерс... in testing_in_python
миллиард вариантов
источник

ИС

Игорь Середа... in testing_in_python
pydantic BaseSettings передаёт привет.
источник

BK

Boris Krutskih in testing_in_python
Сказочный Сникерс
```
class Database:

   def __init__(self, host, user, password, db_name):
       self.host = host
       self.user = user
       self.password = password
       self.db_name = db_name


@pytest.fixture
def db_connector(request):
   DATABASES = {
       'alpha': {
           '
host': DB_HOST,
           '
user': DB_USER,
           '
password': DB_PASSWORD,
           '
db_name': DB_NAME,
       },
       'beta': {
           '
host': DB_HOST_BETA,
           '
user': DB_USER_BETA,
           '
password': DB_PASSWORD_BETA,
           '
db_name': DB_NAME_BETA,
       }
   }

   db = Database(**DATABASES[request.config.getoption('--db')])
   db.open_connection()

   return db

```
Хмм, а в каком случае оно может вообще не коннектится к БД. Я например сейчас пытаюсь запустить тест и ожидаю что оно выдернет юзера с БД, но судя по всему коннект даже не идёт https://dpaste.org/BJqe
в pytest.ini передаю допустим --db=alpha
источник

СС

Сказочный Сникерс... in testing_in_python
а что у тебя пишет?
источник

BK

Boris Krutskih in testing_in_python
Сказочный Сникерс
а что у тебя пишет?
в дебагере и принте ничего)
хотя в БД юзер есть
источник

СС

Сказочный Сникерс... in testing_in_python
у тебя с твоим кодом выше вообще должен ругаться unexpected argument
источник

BK

Boris Krutskih in testing_in_python
Сказочный Сникерс
у тебя с твоим кодом выше вообще должен ругаться unexpected argument
так вроде же все 4 переданы правильно
источник

СС

Сказочный Сникерс... in testing_in_python
нет
источник

СС

Сказочный Сникерс... in testing_in_python
ты что то в корне делаешь не так. у тебя должна быть минимум ошибка инициализации класса Database. если она не проинициализируется то ты не сможешь подконнектиться, не сможешь подконнектиться - не сможешь сделать запрос и принтануть результат
источник

СС

Сказочный Сникерс... in testing_in_python
ты вообще правильно запускаешь?)
источник

BK

Boris Krutskih in testing_in_python
Сказочный Сникерс
ты вообще правильно запускаешь?)
виноват) я функцию не вызвал
источник

СС

Сказочный Сникерс... in testing_in_python
какую функцию?
источник

СС

Сказочный Сникерс... in testing_in_python
ААААААААА
источник

СС

Сказочный Сникерс... in testing_in_python
я даже не поленился, вот такая ошибка у тебя будет
источник

BK

Boris Krutskih in testing_in_python
Сказочный Сникерс
я даже не поленился, вот такая ошибка у тебя будет
не, у меня совсем не такая
источник

АК

Александр Кот... in testing_in_python
Boris Krutskih
Что-то я туплю, таким образом имел ввиду?
https://i.imgur.com/YLzlwKH.png
зачем вам один конфиг на все? сделайте для бд отдельную фикстуру - будет гибче

а, тут уже сказали об этом выше
источник

СС

Сказочный Сникерс... in testing_in_python
Boris Krutskih
не, у меня совсем не такая
как ты запускаешь?
источник

BK

Boris Krutskih in testing_in_python
Сказочный Сникерс
как ты запускаешь?
внизу для теста вызов функции https://dpaste.org/vUtL
Кнопкой Play по файлу) db_helper.py
и в итоге
user = db_connector.run_query(query=sql_get_user_confirmation_code)
AttributeError: 'function' object has no attribute 'run_query'
источник

СС

Сказочный Сникерс... in testing_in_python
понятно
источник