Pytest: SMS-клиент Twilio rest API получает отказ, когда он находится внутри класса, но работает как положено вне класса - PullRequest
0 голосов
/ 26 октября 2019

У меня есть класс ...

some_class.py

from twilio.rest import Client

class SomeClass:
    def __init__(self):
        self.client = Client(ENV['sid'], ENV['token'])

    def send(self):
        response = self.client.messages.send(body='Hello!', from_='+15005550006', to='+15005550006')
        print(f'Sent message: {response.body}')

... и тест ...

test_some_class.py

from some_class import SomeClass
def test_send(db): # db is a fixture
    t = SomeClass()
    t.send()

Любая попытка использовать t.send() из теста, пока я запускаю этот тест, дает мне: requests.exceptions.ConnectionError: Connection refused by Responses: POST https://api.twilio.com/2010-04-01/Accounts/My_SID/Messages.json doesn't match Responses Mock

С другой стороны, если я просто вставлю что-нибудь глупое, например:

some_class.py

from twilio.rest import Client

c = Client(ENV['sid'], ENV['token'])
response = c.messages.send(body='Hello!', from_='+15005550006', to='+15005550006')
print(f'Sent message: {response.body})

class SomeClass:
    ...

В верхней части этого класса я всегда получаюсоответствующий оператор печати (из SMS-сообщения, отправленного за пределы определения класса; один внутри него всегда терпит неудачу).

Я до конца пытаюсь понять, почему! Мне просто кажется, что Twilio отказывается от всего, что запускается из PyTest, из класса, но у меня есть нет идея почему (я пробовал так много разных вариантов перемещения вещей вокруг). Может кто-нибудь пролить некоторый свет на это?

Редактировать: Итак, вызов также работает, если он сделан в классе, но вне метода:

from twilio.rest import Client

class SomeClass:
    c = Client(ENV['sid'], ENV['token'])
    response = c.messages.send(body='Hello!', from_='+15005550006',to='+15005550006')
    print(f'Sent message: {response.body})
    ...

Работает нормально,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...