首页 文章

pytest的错误

提问于
浏览
0

我正在使用@ pytest.mark.parametrize与各种测试用例和预期输出 . 它的传递完全没有测试用例,并且在其他一些情况下给出了这个错误 . 甚至不能谷歌它 . 我想知道可能出了什么问题 . 如果有人能告诉我如何至少谷歌这个错误,我会很高兴!

=============================测试会话开始================= ============平台win32 - Python 2.7.12,pytest-3.0.3,py-1.4.31,pluggy-0.4.0 -c:\ python27 \ python.exe cachedir: .cache rootdir:C:\ Python27,inifile:收集0件/ 1件错误================================= == ERRORS ==================================== ___________________错误收集test_mod_pppoe_disc.py ___________________ lib \ site- packages \ py_path \ local.py:650:in pyimport import(modname)lib \ site-packages \ pytest-3.0.3-py2.7.egg_pytest \ assertion \ rewrite.py:131:in 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:in _rewrite_test tree = ast.parse(source)lib \ ast.py:37:在parse中返回编译(源,文件名,模式,PyCF_ONLY_AST)E ValueError:invalid \ x escape !!!!!!!!!!!!!!!!!!!中断:收集过程中出现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

关于代码的描述:这是我遇到错误的代码 . 我有适当的功能定义 . 第一个测试用例正常工作 . 最后两个测试用例失败了 .

1 回答

  • 4

    您粘贴的示例可以最小化到此文件中:

    import pytest
    
    @pytest.mark.parametrize("foo", ['\n\xcjfeiafa1'])
    def test_escapes(foo):
        pass
    

    这给了我们与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
    

    发生这种情况的原因是由于你的 \xcj 逃逸,这不是一个有效的逃脱 .

相关问题