测试时使用无效语法的Python

2024-05-13 20:57:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在检查一个字符串是否以“4”开头,它将自己归类为签证卡。开运行pytest-v,返回语法错误。在我的验证器.py,我的函数如下所示:

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

我在另一个文件里测试这个:

^{pr2}$

错误是

      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 ========================================================

Tags: inpytestnumbergetpytestlibpackages
2条回答

脚本包含属于python3的语法。所以它只对Python3。在

要在python2.7(以及python3两者)中执行脚本,可以删除函数签名中的冒号,如下所示:

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

正如@marktolonen在评论中提到的,在版本3.5中,输入是新的 https://docs.python.org/3/library/typing.html

您的代码在3.7.3中运行良好。升级到3.5+应该可以解决您的问题。在

相关问题 更多 >