At July 22 A.
This commit is contained in:
parent
85e265e5c1
commit
62e91c8647
|
@ -0,0 +1,59 @@
|
|||
import logging
|
||||
|
||||
|
||||
class Logger:
|
||||
logger = None
|
||||
levels = {
|
||||
"CRITICAL": logging.CRITICAL, "FATAL": logging.FATAL, "ERROR": logging.ERROR, "WARNING": logging.WARNING,
|
||||
"WARN": logging.WARN, "INFO": logging.INFO, "DEBUG": logging.DEBUG, "NOTSET": logging.NOTSET,
|
||||
"D": logging.DEBUG, "I": logging.INFO, "W": logging.WARNING, "E": logging.ERROR,
|
||||
"F": logging.FATAL
|
||||
}
|
||||
|
||||
def __init__(self, name: str = '', level='DEBUG', fh: dict = None, ch: dict = None):
|
||||
if fh and (not "format_style" in fh.keys()) and (not '%' in fh["format"]):
|
||||
fh["format_style"] = '{'
|
||||
if ch and (not "format_style" in ch.keys()) and (not '%' in ch["format"]):
|
||||
ch["format_style"] = '{'
|
||||
self.logger = logging.getLogger(name)
|
||||
self.logger.setLevel(self.levels[level])
|
||||
|
||||
if fh:
|
||||
fhandler = logging.FileHandler(filename=fh["filename"], mode=fh["mode"], encoding='utf-8')
|
||||
fhandler.setLevel(self.levels[fh["level"]])
|
||||
fhandler.setFormatter(
|
||||
logging.Formatter(fmt=fh["format"], style=['%', fh["format_style"]]["format_style" in fh.keys()]))
|
||||
self.logger.addHandler(fhandler)
|
||||
if ch:
|
||||
chandler = logging.StreamHandler()
|
||||
chandler.setLevel(self.levels[ch["level"]])
|
||||
chandler.setFormatter(
|
||||
logging.Formatter(fmt=ch["format"], style=['%', ch["format_style"]]["format_style" in ch.keys()]))
|
||||
self.logger.addHandler(chandler)
|
||||
|
||||
self.d = self.logger.debug
|
||||
self.i = self.logger.info
|
||||
self.w = self.logger.warning
|
||||
self.e = self.logger.error
|
||||
self.f = self.logger.fatal
|
||||
self.c = self.logger.critical
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
log = Logger(name='test', level='DEBUG',
|
||||
fh=None and {
|
||||
"level": 'DEBUG',
|
||||
"format": '{asctime} - {name} - {levelname[0]}: {message}',
|
||||
"filename": './test.log',
|
||||
"mode": 'a'
|
||||
},
|
||||
ch={
|
||||
"level": 'DEBUG',
|
||||
"format": '{asctime} - {name} - {levelname[0]}: {message}'
|
||||
})
|
||||
log.d("调试")
|
||||
log.i("信息")
|
||||
log.w("警告")
|
||||
log.e("错误")
|
||||
log.f("致命")
|
||||
log.c("致命")
|
|
@ -1,15 +1,17 @@
|
|||
import time
|
||||
|
||||
|
||||
def time_format(fmt='%Y-%m-%d %H:%M:%S', ts=None):
|
||||
return time.strftime(fmt, time.localtime(ts))
|
||||
def time_strftime(fmt='%Y-%m-%d %H:%M:%S', ts=None, utc=False):
|
||||
return time.strftime(fmt, [time.localtime, time.gmtime][utc](ts))
|
||||
|
||||
|
||||
def time_make(datetime_format='', dt=''):
|
||||
def time_strptime(datetime_format='', dt=''):
|
||||
return time.mktime(time.strptime(dt, datetime_format))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# Example.
|
||||
print(time_format(fmt='%Y年%m月%d日 %H:%M:%S'))
|
||||
print(time_format(fmt='%Y年%m月%d日 %H:%M:%S', ts=1640012345))
|
||||
print(time_make('%Y-%m-%d %H:%M:%S', '2021-12-20 22:59:05'))
|
||||
print(time_strftime(fmt='%Y年%m月%d日 %H:%M:%S'))
|
||||
print(time_strftime(fmt='%Y年%m月%d日 %H:%M:%S', ts=1640012345))
|
||||
print(time_strftime(fmt='%H:%M:%S', ts=120, utc=True))
|
||||
print(time_strptime('%Y-%m-%d %H:%M:%S', '2021-12-20 22:59:05'))
|
||||
|
|
File diff suppressed because it is too large
Load Diff
52
run.py
52
run.py
|
@ -4,6 +4,39 @@ from test_case import TestDemo
|
|||
import unittest
|
||||
|
||||
|
||||
from types import FunctionType
|
||||
|
||||
|
||||
|
||||
|
||||
# TestDemo3 = unittest.TestCase
|
||||
# TestDemo3.test_007 = test_007
|
||||
# TestDemo3.test_007.__module__= TestDemo3
|
||||
|
||||
|
||||
obj = type("TestCases",(unittest.TestCase,),dict())
|
||||
obj.__doc__ = 'Doc'
|
||||
obj.test_demo0123456789ABCDEF_000000 = FunctionType(compile('def foo(self): import time; time.sleep(0)', "", "exec").co_consts[0], globals(), "foo")
|
||||
obj.test_demo1 = FunctionType(compile('def foo(self): return "bar"', "", "exec").co_consts[0], globals(), "foo")
|
||||
obj.test_demo2 = FunctionType(compile('def foo(self): assert 1 == 2', "", "exec").co_consts[0], globals(), "foo")
|
||||
obj.test_demo3 = FunctionType(compile('def foo(): return "bar"', "", "exec").co_consts[0], globals(), "foo")
|
||||
obj.test_demo1.__qualname__ = "test_demo1"
|
||||
obj.test_demo1.__doc__ = "这是一条测试用例;这是一条测试用例;这是一条测试用例;这是一条测试用例;这是一条测试用例;这是一条测试用例;这是一条测试用例;这是一条测试用例;这是一条测试用例;"
|
||||
obj.test_demo2.__qualname__ = "test_demo2"
|
||||
obj.test_demo2.__doc__ = "这是一条测试用例;这是一条测试用例;这是一条测试用例;这是一条测试用例;这是一条测试用例;这是一条测试用例;这是一条测试用例;这是一条测试用例;这是一条测试用例;这是一条测试用例;这是一条测试用例;这是一条测试用例;"
|
||||
obj.test_demo3.__qualname__ = "test_demo3"
|
||||
obj.test_demo3.__doc__ = "这是一条测试用例;这是一条测试用例;这是一条测试用例;"
|
||||
# print(obj)
|
||||
|
||||
# foo_code = compile('def foo(): return "bar"', "", "exec")
|
||||
# print(foo_code)
|
||||
# foo_func = FunctionType(foo_code.co_consts[0], globals(), "foo")
|
||||
# foo_func.__qualname__ = "test_demo"
|
||||
# print(foo_func)
|
||||
|
||||
|
||||
|
||||
|
||||
base_path = os.path.dirname(__file__)
|
||||
report_path = base_path
|
||||
report_filename = os.path.join(report_path, 'report.html')
|
||||
|
@ -12,11 +45,28 @@ case_suite = unittest.TestSuite()
|
|||
case_suite.addTest(TestDemo('test_one'))
|
||||
case_suite.addTest(TestDemo('test_two'))
|
||||
case_suite.addTest(TestDemo('test_tre'))
|
||||
case_suite.addTest(TestDemo('test_0123456789ABCDEF_123456_000000'))
|
||||
|
||||
# case_suite.addTest(obj('test_demo1'))
|
||||
# case_suite.addTest(obj('test_demo1'))
|
||||
# case_suite.addTest(obj('test_demo1'))
|
||||
# case_suite.addTest(obj('test_demo1'))
|
||||
# case_suite.addTest(obj('test_demo1'))
|
||||
# case_suite.addTest(obj('test_demo1'))
|
||||
# case_suite.addTest(obj('test_demo1'))
|
||||
# case_suite.addTest(obj('test_demo1'))
|
||||
# case_suite.addTest(obj('test_demo1'))
|
||||
# case_suite.addTest(obj('test_demo2'))
|
||||
# case_suite.addTest(obj('test_demo3'))
|
||||
|
||||
|
||||
def start():
|
||||
with open(report_filename, 'wb') as f:
|
||||
runner = HTMLTestRunner(stream=f, title='自动化测试报告', verbosity=2, description='描述', tester='Tester')
|
||||
runner = HTMLTestRunner(stream=f,
|
||||
title='自动化测试报告',
|
||||
verbosity=2,
|
||||
description='描述',
|
||||
tester='DESKTOP')
|
||||
runner.run(case_suite)
|
||||
|
||||
|
||||
|
|
26
test_case.py
26
test_case.py
|
@ -1,23 +1,33 @@
|
|||
import unittest
|
||||
from Base.Class.Logger import *
|
||||
from Base.Class.Http import *
|
||||
log = Logger(name='test', level='DEBUG', ch={
|
||||
"level": 'DEBUG',
|
||||
"format": '{asctime} - {name} - {levelname[0]}: {message}'
|
||||
})
|
||||
|
||||
|
||||
class TestDemo(unittest.TestCase):
|
||||
def test_one(self):
|
||||
'''
|
||||
哈哈
|
||||
ONE用例
|
||||
:return:
|
||||
'''
|
||||
assert 1 == 1
|
||||
log.i("Info...")
|
||||
log.w("Warnning...")
|
||||
|
||||
def test_two(self):
|
||||
'''
|
||||
呵呵
|
||||
:return:
|
||||
'''
|
||||
assert 'H' in 'Hello!'
|
||||
log.d("正在断言...")
|
||||
assert 'A' in 'Hello!', '断言失败'
|
||||
|
||||
def test_tre(self):
|
||||
assert 5 == 10, '断言失败'
|
||||
assert a == 10
|
||||
|
||||
def test_0123456789ABCDEF_123456_000000(self):
|
||||
Request().http('GET',"http://more-md.fanscloud.net/iplookup", proxy="http://127.0.0.1:8888")
|
||||
pass
|
||||
|
||||
|
||||
TestDemo.test_tre.__doc__ = "测试吖"
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
Loading…
Reference in New Issue