组织多个用例、断言方法、测试报告
核心要素:
TestCase:unittest的组成部分用来书写用例代码
TestSuite:打包TestCase,可以将多个脚本文件组装在义气
TestRunner:用例执行
TestLoader:是TestSuite的补充,是用例组装TestCase的
Fixture:测试夹具,代码结构,即用例执行顺序 前–>用例–>后置
1、TestCase的使用
import unittest
class TestDemo(unittest.TestCase):
def test_method1(self):
print("测试方法1")
def test_method2(self):
print("测试方法2")
if __name__ == "__main__":
unittest.main()
运行截图
2、TestSuite使用
import unittest
from dy01_TestDemo1 import TestDemo1
from dy01_TestDemo2 import TestDemo2
suite = unittest.TestSuite()
suite.addTest(TestDemo1('test_method1'))
suite.addTest(TestDemo1('test_method2'))
suite.addTest(TestDemo2('test_method1'))
suite.addTest(TestDemo2('test_method2'))
runner = unittest.TextTestRunner()
runner.run(suite)
更简单的导入
import unittest
from dy01_TestDemo1 import TestDemo1
from dy01_TestDemo2 import TestDemo2
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestDemo1))
suite.addTest(unittest.makeSuite(TestDemo2))
runner = unittest.TextTestRunner()
runner.run(suite)
运行截图
查看执行结果
运行结果的每个点都代表通过(.用例通过、F用例不通过、E用例代码错误)
3、TestLoader测试加载
与TestSuite作用一样 :只是代码结构不一样
import unittest
suite = unittest.TestLoader().discover('./','dy01_TestDemo*.py')
runner = unittest.TextTestRunner()
runner.run(suite)
运行截图
Fixture
方法级别Fixture,方法名是固定的
每个用例执行前后都会自动带调用
类别级FIxture(只有一次在头和尾)
模块级FIxture(在class类外)
文件名Fiture
import unittest
class TestLogin(unittest.TestCase):
def setUp(self): # 方法级别Fixture每个测试用例都会执行一次(在头部)
print('2.打开')
def tearDown(self): # 方法级别Fixture每个测试用例都会执行一次(在尾部)
print('4.关闭')
@classmethod # 类别级FIxture(只有一次在头)
def setUpClass(cls):
print('1.浏览器')
@classmethod # 类别级FIxture(只有一次在尾)
def tearDownClass(cls):
print('5.完成关闭')
def test_Login1(self):
print('3.测试')
def test_Login2(self):
print('3.测试')
def test_Login3(self):
print('3.测试')
文件名FT_TSloader
import unittest
suite = unittest.TestLoader().discover('./','FIxture*.py')
runner = unittest.TextTestRunner()
runner.run(suite)
运行结果