python - 使用断言 Python 进行测试时语法无效
问题描述
我正在检查一个字符串是否以“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 ========================================================
解决方案
您的脚本包含属于 python3 的语法。所以它只适用于python3。
要在 python2.7(和 python3 两者)中执行脚本,您可以删除函数签名中的冒号,如下所示:
def get_issuer(number):
if number.startswith('4'):
return 'Visa'
推荐阅读
- ios - 获取 Cocoapods 自动设置正确的 swift 版本
- ios - 如何让 UIlabel 自动动态跨越多行。在具有多个 UIlabels 的 Tableview 单元格/ContentView 内
- git - 多个 Git(*) 存储库的集中式 CI
- node.js - 在其目录之外运行 NodeJS 应用程序
- python - 通过 PIL 将 Numpy 数组保存为实验室图像
- python - sqlalchemy.exc.ArgumentError:映射器映射类无法为映射表“用户”组装任何主键列
- visual-studio-code - 如何在 Vscode 中使片段建议区分大小写?
- image - 如何将 TVIPS 摄像头的 tif 校准导入 DM
- python - 循环遍历一系列日期以进行比较
- python-3.x - 在作业 Circle Ci 中使用 Blackbox 时出现错误“gpg:解密失败:无密钥”