Я пытаюсь сделать следующее:
@patch('uuid.uuid4', autospec=True)
def test_generate_adid(self, patched_uuid, app_api):
patched_uuid.return_value = "9e51ab81-6d65-4b81-af3b-8f7f49d69ba7"
adid = app_api.generate_adid()
assert adid == "9e51ab81-6d65-4b81-af3b-8f7f49d69ba7"
Где app_api
- это свойство тестируемого класса.
Однако в моем классе app_api
, uuid4()
не получает исправлений и продолжает возвращать uuid, отличный от того, который я пытаюсь заставить. Вот как выглядит метод экземпляра generate_adid()
:
from uuid import uuid4
def generate_adid(self):
adid = str(uuid4())
return adid
Ошибка тестового модуля:
AssertionError: assert '90b29e86-e3b0-40aa-8971-f868f90cb009' == '9e51ab81-6d65-4b81-af3b-8f7f49d69ba7'
Я ознакомился с этим постом: Как смоделировать генерацию uuid в тестовом примере? но все равно не повезло.
Что я делаю не так? Спасибо всем, кто ответит заранее.
РЕДАКТИРОВАТЬ: Вот полный код:
from requests import Session
from random import uniform
from hashlib import md5
from hmac import new
from uuid import uuid4
from json import dumps
class AppApi:
def __init__(self, account):
self.account = account
self.session = Session()
def generate_adid(self):
adid = str(uuid4())
return adid
Контрольный пример:
from src import AppApi
from pytest import fixture
from unittest.mock import patch
from json import loads
ACCOUNT = {
"email": "user@email.com",
"username": "user",
"password": "s3cr3t"
}
@fixture
def app_api():
app_api = AppApi(ACCOUNT)
yield app_api
class TestAppApi:
@patch('uuid.uuid4')
def test_generate_adid(self, patched_uuid, app_api):
patched_uuid.return_value = "9e51ab81-6d65-4b81-af3b-8f7f49d69ba7"
adid = app_api.generate_adid()
assert adid == "9e51ab81-6d65-4b81-af3b-8f7f49d69ba7"