繁体   English   中英

Python Regexs单元测试

[英]Python Regexs Unit Testing

我正在尝试对一些正则表达式def进行一些单元测试。

x = "TEST TEST TEST. Regular Expressions. TEST TEST TEST"

def find_start_end(phrase,sample_set):
    m = re.search(phrase, sample_set)

    start = m.start()
    end = m.end()
    return (start,end)
    #print(start,end)

if __name__ =="__main__":
    print(find_start_end("Regular Expressions", x))

这返回(16,35)....

我的测试单位是...

import unittest

class TestAlpha(unittest.TestCase):


def test_1(self):
    x = "Regular Expressions"
    self.assertEqual((0, 19), find_start_end("Regular Expressions", x))

def test_2(self):
        x = "TEST TEST TEST. Regular Expression. TEST TEST TEST"
        self.assertRaises(AttributeError, find_start_end("Regular Expressions", x))

if __name__ == "__main__":
    unittest.main()

测试1顺利通过,我的问题在test_2上,我如何测试AttributeError: 'NoneType' object has no attribute 'start'

我试图使用assertRaises ,但是我不确定自己做错了什么。 我愿意接受任何更有效的建议。 只是想弄清楚如何测试NoneType 我对正则表达式非常陌生。

代码使用TestCase.assertRaises错误的方式。

替换以下行:

self.assertRaises(AttributeError, find_start_end("Regular Expressions", x))

有:

# Do not call `find_start_end` directly,
#   but pass the function and its arguments to assertRaises
self.assertRaises(AttributeError, find_start_end, "Regular Expressions", x)

要么:

# Use assertRaises as context manager
with self.assertRaises(AttributeError)
    find_start_end("Regular Expressions", x)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM