Неверный синтаксис при тестировании с Assert Python - PullRequest
0 голосов
/ 16 мая 2019

Я проверяю, начинается ли строка с «4», она классифицируется как визовая карта. При запуске pytest -v возвращается синтаксическая ошибка.В моем validator.py моя функция выглядит так:

def get_issuer(number: str) -> str:
    if number.startswith('4'):
        return 'Visa'

И я проверяю это в отдельном файле:

from card_validator.validator import get_issuer

def test_get_issuer_visa():
    assert get_issuer("4343 4212 1435 1231") == "Visa"

Ошибка

      def get_issuer(number: str) -> str:
E                            ^
E   SyntaxError: invalid syntax

Я не могу найти ошибку.Любая помощь в этом?

РЕДАКТИРОВАТЬ: ПОЛНЫЙ вывод для pytest -v является

========================================================== test session starts ==========================================================
platform linux2 -- Python 2.7.15rc1, pytest-3.3.2, py-1.5.2, pluggy-0.6.0 -- /usr/bin/python2
cachedir: .cache
rootdir: /home/bs-094/Dev/validator, inifile:
collected 0 items / 1 errors                                                                                                            

================================================================ ERRORS =================================================================
_______________________________________________ ERROR collecting tests/test_validators.py _______________________________________________
/usr/lib/python2.7/dist-packages/_pytest/python.py:403: in _importtestmodule
    mod = self.fspath.pyimport(ensuresyspath=importmode)
/usr/lib/python2.7/dist-packages/py/_path/local.py:668: in pyimport
    __import__(modname)
/usr/lib/python2.7/dist-packages/_pytest/assertion/rewrite.py:213: in load_module
    py.builtin.exec_(co, mod.__dict__)
tests/test_validators.py:1: in <module>
    from card_validator.validator import get_issuer
E     File "/home/bs-094/Dev/validator/card_validator/validator.py", line 1
E       def get_issuer(number: str) -> str:
E                            ^
E   SyntaxError: invalid syntax
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
======================================================== 1 error in 0.12 seconds ========================================================

Ответы [ 2 ]

2 голосов
/ 16 мая 2019

Ваш скрипт содержит синтаксис, принадлежащий python3. Так будет только для python3.

Для выполнения сценария в python2.7 (и в python3 оба) вы можете удалить двоеточия в сигнатуре функции, как показано ниже:

def get_issuer(number):
    if number.startswith('4'):
        return 'Visa'

1 голос
/ 16 мая 2019

Как упомянул @Mark Tolonen в комментарии, ввод нового в версии 3.5 https://docs.python.org/3/library/typing.html

Ваш код работает в 3.7.3.Обновление до 3.5+ должно решить вашу проблему.

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