单元测试

  1. unittest

unittest

assert(断言):和if not expression:/n raise AssertionError /n AssertionError效果一样

使用unittest的TestCase编写单元测试

unittest
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from ** import app  #导入flask的app对象
class Mytest(unittest.TestCase):
# 只要是以test开头的方法都会自动执行测试
def setUp(self):
# 该方法会首先执行,方法名为固定写法
print('setUp')
self.cli = app.test_client() #生成测试客户端

def tearDown(self):
# 该方法会在测试代码执行完后执行,方法名为固定写法
print('tearDown')

def test_wrong_mobile(self):
print('test_wrong_mobile')
mobile = '12345678901'
ret = self.cli.get('/ret_mobile/%s' %(mobile))
# assert ret.status_code == 404
self.assertEqual(ret.status_code, 404) #效果和assert一样

def test_right_mobile(self):
print('test_right_mobile')
mobile = '13411111111'
ret = self.cli.get('/ret_mobile/%s' % (mobile))
assert ret.status_code == 200
assert ret.data.decode() == mobile

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

使用TestSuite套件添加已有测试类

1
2
3
suite = unittest.Testsuite()    #创建套件实例 
suite.addTest(类名('方法名'))或(类名.方法名) #添加测试的函数方法
suite.addTest(unittest.makeSuitw(类名)) # 添加需要运行的测试类

使用TextTestRunner套件执行测试套件实例

1
2
runner = unittest.TextTestRunner()   #创建运行实例 
runner.run(suite) # 运行测试套件

使用defaultTestLoader添加测试类文件

1
2
3
4
disconver = unittest.defaultTestLoader.discover('.py文件路径',pattern='*.py')  # 匹配路径下的'*.py'文件 
runner = unittest.TextTestRunner()
runner.run(disconver)

断言:

1
2
3
4
5
6
7
self.assertEqual(arg1, arg2,msg=None)    #验证arg1=arg2,不等于就抛出错误
self.assertNotEqual(arg1, arg2, msg=None) #验证arg1!=arg2, 相等就抛出错误
self.assertTrue(expr, msg=None) # 验证expr是True,如果是False则抛出错误
self.assertFalse(expr, msg=None) # 验证ecpr为False,如果是True则抛出错误
self.assertlsNone(expr, msg=None) #验证expr为None,不是则抛出错误
self.assertlsNotNone(expr, msg=None) # 验证expr不为None,不是则抛出错误
self.assertIn(arg1, arg2, msg=None) # 验证arg1是arg2的子串,不是则抛出错误

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 zoubinbf@163.com

×

喜欢就点赞,疼爱就打赏