Что является преимуществами, или различие в “утверждают Ложь” и “self.assertFalse”

401 unauthorized_client

Означает, что ваш код не был авторизован. Если вы хотите получить доступ к личным данным пользователя, вам необходимо войти в систему. Для доступа к API Google вашему коду необходим токен доступа.

То, что вы должны сделать, это авторизовать свой код один раз, используя Oauth2 в браузере, сохранить токен обновления где-нибудь и попросить, чтобы задание cron прочитало токен обновления и запросило новый токен доступа до его запуска.

Предполагая, что у вас есть учетная запись, которую вы пытаетесь вставить в нее, вы также можете рассмотреть возможность использования служебной учетной записи.

Обновить токен

Если вы храните токен обновления в базе данных, вы должны назначить его своему клиенту, прежде чем запускать здесь свой код. Я делаю это с токеном обновления, хранящимся в переменная сеанса.

$client->refreshToken(

401 unauthorized_client

Означает, что ваш код не был авторизован. Если вы хотите получить доступ к личным данным пользователя, вам необходимо войти в систему. Для доступа к API Google вашему коду необходим токен доступа.

То, что вы должны сделать, это авторизовать свой код один раз, используя Oauth2 в браузере, сохранить токен обновления где-нибудь и попросить, чтобы задание cron прочитало токен обновления и запросило новый токен доступа до его запуска.

Предполагая, что у вас есть учетная запись, которую вы пытаетесь вставить в нее, вы также можете рассмотреть возможность использования служебной учетной записи.

Обновить токен

Если вы храните токен обновления в базе данных, вы должны назначить его своему клиенту, прежде чем запускать здесь свой код. Я делаю это с токеном обновления, хранящимся в переменная сеанса.

[110]SESSION['refresh_token']);
29
задан Filipp W. 7 December 2018 в 10:39
поделиться

3 ответа

assert False выдает исключение без полезной информации регистрации. В тесте была ошибка.

self.assertFalse() выдает исключение при сбое теста с информацией о сбое теста, такой как сообщение и имя теста.

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

Ошибки - серьезная проблема с вашим кодом.

Сбои - это просто сбои, которые нужно исправить.

28
ответ дан S.Lott 28 November 2019 в 01:01
поделиться

Если вы запустите

import unittest

class Test_Unittest(unittest.TestCase):
    def test_assert(self):
        assert False
    def test_assertFalse(self):
        self.assertFalse(True)

if __name__ == '__main__':
    unittest.main()

Вы получите ту же информацию в журнале, тот же сбой:

FF
======================================================================
FAIL: test_assert (__main__.Test_Unittest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/unutbu/pybin/test.py", line 6, in test_assert
    assert False
AssertionError

======================================================================
FAIL: test_assertFalse (__main__.Test_Unittest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/unutbu/pybin/test.py", line 8, in test_assertFalse
    self.assertFalse(True)
AssertionError

----------------------------------------------------------------------
Ran 2 tests in 0.000s

FAILED (failures=2)

Причина, по которой оба случая обрабатываются одинаково, заключается в том, что unittest.TestCase определяет

failureException = AssertionError

Когда вы говорите assert False , возникает AssertionError.

Когда вы говорите self.assertFalse(True), возникает failureExeception.

Поскольку эти исключения одинаковы, видимой разницы нет.

assert и self.assertFalse все же отличаются в обычном использовании.

assert используется для объявления того, что определенное условие должно выполняться в определенный момент кода. Он используется как костыль во время разработки, но не предназначен для использования в производственном коде. Если вы запустите python -O my_unittest.py, все утверждения assert будут проигнорированы. Это нарушит ваше намерение использовать assert, возможно, заставив ваши модульные тесты пройти даже при наличии сбоя.

Даже если (без флага -O) результат тот же, assert не предназначен для использования в коде модульных тестов. При написании модульных тестов используйте self.assertTrue или self.assertFalse.

38
ответ дан 28 November 2019 в 01:01
поделиться

Один момент, который ответы до сих пор не упоминали, заключается в том, что существует несколько тестовых фреймворков (например, py.test и nose), которые используют магию самоанализа python, чтобы позволить вам писать модульные тесты, подобные этому:

# test_this_and_that.py
def test_frobber():
    assert frobber('x') == 'y'
# EOF

, не требуя какого-либо шаблона unittest, который вы видели выше. Поэтому в некоторых случаях это может свестись к просто кадру / стилистическому вопросу.

10
ответ дан 28 November 2019 в 01:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: