unittest总结
unittest是什么
- unittest是python自带的单元测试框架,通过其能够对python程序开展单元测试
- 单元测试就是通过传参,对某个模块、某个类、某个函数进行结果输出后验证的测试
unittest包含哪些子模块,并且子模块具有哪些方法
TestCase 模块,测试类需要继承unittest.TestCase类 才能使用以下方法
方法 | 描述 |
---|---|
一组用于运行测试 | |
setUp() | 在调用测试方法之前立即调用该方法 |
tearDown() | 在调用测试方法之后立即调用该方法 |
setUpClass() | 在运行单个类中的测试之前调用的类方法。 setUpClass以类作为唯一参数调用,并且必须修饰为classmethod()。在方法上使用@classmethod装饰器装饰 |
tearDownClass() | 在单个类中的测试运行后调用的类方法。 tearDownClass以类作为唯一参数调用,并且必须修饰为classmethod()。在方法上使用@classmethod装饰器装饰 |
skipTest(reson) | 跳过此方法 |
一组用于断言 | |
assertEqual(a, b) | a == b |
assertNotEqual(a, b) | a != b |
assertTrue(x) | bool(x) is True |
assertFalse(x) | bool(x) is False |
assertIs(a, b) | a is b |
assertIsNot(a, b) | a is not b |
assertIsNone(x) | x is None |
assertIsNotNone(x) | x is not None |
assertIn(a, b) | a in b |
assertNotIn(a, b) | a not in b |
assertIsInstance(a, b) | isinstance(a, b) |
assertNotIsInstance(a, b) | not isinstance(a, b) |
TestSuit
方法 | 描述 |
---|---|
addTest() | 新增单个测试方法 |
addTests() | 新增多个测试方法 |
TestLoader
方法 | 描述 |
---|---|
loadTestsFromTestCase | 从测试类中加载所有的测试方法 |
loadTestsFromModule | suit.addTest(loader.LoaderTestsFromName(Module)) #模块名,一定不要加引号 |
loader.LoaderTestsFromName() | 用法:suit.addTest(loader.LoaderTestsFromName(“module.class.method”)) #测试模块名.测试类名.测试方法名 |
LoaderTestsFromNames() | 用法:suit.addTest(loader.LoaderTestsFromNames([“module.class.method1”,“module.class.method2”])) #传参为列表形式 |
unittest的demo
# ProjectName:apiAutoTest1
# FileName:first_demo_unittest
# Author:wangchao
# CreateTime:2021/5/26 14:20
# Description:
import unittest
# form 包名 import 模块文件
from base.my_unittest import my_math
from base.utils import HTMLTestRunnerNew
class ProductTestCase(unittest.TestCase):
def setUp(self):
print("执行测试方法开始前执行,通常用于初始化资源")
def test_integers(self):
print("wangchao")
def test_string(self):
print("nico.wang")
def test_list(self):
print("测试list")
def tearDown(self):
print("测试方法结束后执行,通常用于清理代码")
if __name__ == '__main__':
unittest.main()
# ProjectName:apiAutoTest1
# FileName:my_test_suit
# Author:wangchao
# CreateTime:2021/5/26 21:18
# Description:测试报告需要引用HTMLTestRunnerNew模块
import unittest
from base.my_unittest.first_demo_unittest import ProductTestCase
from base.utils import HTMLTestRunnerNew
loader = unittest.TestLoader()
# suite.addTest(loader.loadTestsFromModule(ProductTestCase))
from base.utils.HTMLTestRunnerNew import HTMLTestRunner
if __name__ == "__main__":
suite = unittest.TestSuite()
suite.addTest(ProductTestCase('test_integers'))
suite.addTest(ProductTestCase('test_string'))
suite.addTest(ProductTestCase('test_list'))
# "执行测试用例,verbosity=2参数是测试结果显示复杂度,这里是具体到每一条执行结果"
# runner = unittest.TextTestRunner(verbosity=2)
# runner.run(suite)
# 生成测试报告
with open('report.html', 'wb')as fb:
test_run = HTMLTestRunner(stream=fb, verbosity=2, title='测试报告', description='...', tester='nico.wang')
test_run.run(suite)