1 首先直接在文件中定义函数或者定义在类里面。
#encoding:utf8
#!/usr/bin/python
import logging
logger = logging.getLogger()
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
filename='log_ip_test.log',
filemode='wb')
》》logging.basicConfig函数各参数: filename: 指定日志文件名 |
def checkValidIP(ip):
addr=ip.strip().split('.') #把IP地址分片为一个列表
if len(addr)!=4:
return False
i=0
num=0
while(i<4):
try:
num=int(addr[i])#验证是否纯数字
if num>255:#num不能大于255
return False
except:
return False
i+=1
return True
def checkIp(ip):
if not ip:
print "check ip address fail,it is null!"
logger.debug("check ip address fail,it is null!\n")
return False
flag= checkValidIP(ip)
if not flag:
print "check ip address fail"
logger.debug("check ip address fail!\n")
return False
else:
print "your ip address is right: %s",ip
logger.debug("check ip address success,%s!\n"%ip)
return True
2 单元测试unittest
每一个继承TestCase类的子类里面实现的具体的方法(以test开头的方法)都是一条用例
#encoding:utf8
#!/usr/bin/python
import sys
import ipcheck
import unittest
class ipTest(unittest.TestCase):
#该函数会首先执行
def setUp(self):
pass
#该函数会在测试代码执行完后执行
def tearDown(self):
pass
def test_empty_ip(self):#空地址
self.assertEqual(ipcheck.checkIp(""), False)
self.assertEqual(ipcheck.checkIp(" "), False)
def test_str_ip(self):#字符
self.assertEqual(ipcheck.checkIp("abc.edf.a.b"), False)
self.assertEqual(ipcheck.checkIp("abcdef!@"), False)
def test_big_ip(self):#大于255
self.assertEqual(ipcheck.checkIp("192.168.256.10"), False)
self.assertEqual(ipcheck.checkIp("256.192.16.10"), False)
self.assertEqual(ipcheck.checkIp("2560.1920.16.10"), False)
def test_little_ip(self):#小于0
self.assertEqual(ipcheck.checkIp("-1.-2.256.10"), False)
self.assertEqual(ipcheck.checkIp("256.192.16.10"), False)
def test_normal_ip(self):#正常ip
self.assertEqual(ipcheck.checkIp("192.168.255.0"), True)
self.assertEqual(ipcheck.checkIp("129.168.0.254"), True)
def test_long_ip(self):#正常ip
self.assertEqual(ipcheck.checkIp("192.168.255.0.10"), False)
self.assertEqual(ipcheck.checkIp("129.168.0.254.100"), False)
if __name__ == '__main__':
unittest.main()
3,运行结果
日志样式
Sat, 29 Jun 2019 15:22:34 ipcheck.py[line:37] DEBUG check ip address fail! Sat, 29 Jun 2019 15:22:34 ipcheck.py[line:37] DEBUG check ip address fail! |
其他参考网址:
a,unittest之TestCase类详解
https://blog.youkuaiyun.com/fengguangke/article/details/81673971
b,log日志保存
https://blog.youkuaiyun.com/sinat_34166518/article/details/84028155