我将 @pytest.mark.parametrize 与各种测试用例和预期输出一起使用。它通过很少的测试用例完全正常,并在其他一些情况下出现此错误。甚至无法谷歌它。我想知道可能出了什么问题。如果有人能告诉我如何至少在谷歌上搜索此错误,我会很高兴!
============================== 测试会话开始 ================== ============ 平台 win32 -- Python 2.7.12, pytest-3.0.3, py-1.4.31, pluggy-0.4.0 -- c:\python27\python.exe
缓存目录:.cache
rootdir: C:\Python27, inifile:
收集 0 个项目 / 1 个错误
==================================== 错误 ============== ======================
___________________ 错误收集 test_mod_pppoe_disc.py ___________________
lib\site-packages\py_path\local.py:650: 在 pyimport 中
进口(模组名称)
lib\site-packages\pytest-3.0.3-py2.7.egg_pytest\assertion\rewrite.py:131: 在 find_module 中
source_stat, co = _rewrite_test(self.config, fn_pypath)
lib\site-packages\pytest-3.0.3-py2.7.egg_pytest\assertion\rewrite.py:322:在_rewrite_test
树 = ast.parse(source)
lib\ast.py:37: 在解析中
返回编译(源,文件名,模式,PyCF_ONLY_AST)
E ValueError: 无效 \x 转义
!!!!!!!!!!!!!!!!!!!!!!!! 中断:收集过程中出现 1 个错误 !!!!!!!!!!!!!!!!!!!!! ============================ 0.21 秒内出现 1 个错误 ================== ==========
@pytest.mark.parametrize("test_input1,test_input2,expected", [
(ARP(sha='D\x85\x00\xa2}\xad', spa='\n\xc4@=', tha='\x00\x00\x00\x00\x00\x00', tpa='\n\xc4@\x01'),"<socket._socketobject object at 0x0000000003DC8118>",0),
(ARP(sha='jrofalfeoiexad', spa='\nenkajf@=', tha='\x00\x00\x00\x02jfcalkfel', tpa='\n\xcjfeiafa1'),"<socket._socketobject object at 0x0000000003D2BD48>",0),
(ARP(eioakn iejfoeajoijea),"<socket._socketobject object at 0x0000000003DC8118>",0)
])
def test_mod_arp(test_input1,test_input2,expected):
assert mod_arp(test_input1,test_input2) == expected
Run Code Online (Sandbox Code Playgroud)
关于代码的描述:这是我出错的代码。我定义了适当的功能。第一个测试用例工作正常。最后两个测试用例失败了。
您粘贴的示例可以最小化到此文件中:
import pytest
@pytest.mark.parametrize("foo", ['\n\xcjfeiafa1'])
def test_escapes(foo):
pass
Run Code Online (Sandbox Code Playgroud)
这给了我们 Python 2 相同的错误,以及 Python 3 更清晰的错误:
/usr/lib/python3.5/site-packages/_pytest/python.py:410: in _importtestmodule
mod = self.fspath.pyimport(ensuresyspath=importmode)
/usr/lib/python3.5/site-packages/py/_path/local.py:650: in pyimport
__import__(modname)
E File "/home/florian/tmp/foo.py", line 3
E @pytest.mark.parametrize("foo", ['\n\xcjfeiafa1'])
E ^
E SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \xXX escape
Run Code Online (Sandbox Code Playgroud)
发生这种情况的原因是您的\xcj逃逸,这不是有效的逃逸。
| 归档时间: |
|
| 查看次数: |
5404 次 |
| 最近记录: |