1、第一步:创建python用例文件
2、第二步:创建用例类
3、第三步:写测试用例
import unittest class TestDemo(unittest.TestCase): """定义测试类""" def test_01_login(self): print("这是一条测试登录的用例") def test_02_register(self): print("这是一条注册的测试用例")
unittest用例编写----用例前置和后置
1、setUp -----测试用例级别的前置方法,每执行一条测试用例时,首先要执行的方法
2、TearDown----测试用例级别的后置方法,每执行完一条测试用例时,要执行的方法
3、setUpClass----测试用例类的前置方法,在执行测试用例时,首先要执行的内容(整个测试类中,此方法只执行一次)
4、TearDownClass----测试用例类的后置方法,测试用例执行完后,再执行的内容(整个测试类中,此方法只执行一次)
1 import unittest 2 3 class TestDemo2(unittest.TestCase): 4 def test_01(self): 5 print("这是测试登录的用例") 6 7 def test_02(self): 8 print("这是测试注册的用例") 9 10 def setUp(self): 11 print("用例执行的前置方法---setUp--") 12 13 def tearDown(self): 14 print("用例执行的后置方法---tearDown----")
1 import unittest 2 3 class TestDemo3(unittest.TestCase): 4 def test_01(self): 5 print("这是测试登录的用例") 6 7 def test_02(self): 8 print("这是测试注册的用例") 9 10 @classmethod #可以查看setUpClass原码,此方法是属于类方法 11 def setUpClass(cls): 12 print("这是测试类级别的前置方法") 13 14 @classmethod 15 def tearDownClass(cls): 16 print("这是测试类级别的后置方法")
unittest用例收集---TestSuite
1、测试套件
2、用例加载器
3、加载用例的方法
1 import unittest 2 from demo1.test01 import test_01 3 from demo1 import test01 4 #创建一个测试套件 5 suite = unittest.TestSuite() 6 7 8 #创建一个用例加载器 9 loader = unittest.TestLoader() 10 11 #将用例加载到测试套件中 12 #方式一、通过类名来加载测试用例 13 suite.addTest(loader.loadTestsFromTestCase(test_01)) 14 15 #方式二、通过模块名来加载测试用例 16 suite.addTest(loader.loadTestsFromModule(test01)) 17 18 19 #方式三、通过用例所在的文件路径进行加载用例,默认查找以test开头的py文件 20 #可以修改匹配规则进行加载用例pattern="test*.py" 21 suite.addTest(loader.discover(用例所在的文件夹路径,pattern="test*.py")) 22 23 24 #获取套件中用例的数量 25 print("套件中的用例数量",suite.countTestCases())
unittest用例运行---TestRunner
1、unittest的运行方式
2、TestTestRunner
1 import unittest 2 from demo1.test01 import test_01 3 from demo1 import test01 4 #创建一个测试套件 5 suite = unittest.TestSuite() 6 7 8 #创建一个用例加载器 9 loader = unittest.TestLoader() 10 11 #将用例加载到测试套件中 12 #方式一、通过类名来加载测试用例 13 suite.addTest(loader.loadTestsFromTestCase(test_01)) 14 15 16 #用例运行 17 #runner = unittest.TextTestRunner() 18 #runer.run(suite) 19 20 #如何想把测试结果写入到文本文件中 21 #stream参数:指要写入文件的路径 22 #verbosity参数:用例执行情况的详细程度,只有0~2,2是最详细 23 with open("result.txt","w",encoding="utf-8") as f: 24 runner = unittest.TextTestRunner(stream=f,verbosity=2) 25 runner.run(suite)
unittest用例加载&运行扩展
unittest中自带有默认的加载器
1 import unittest 2 from demo1.test01 import test_01 3 from demo1 import test01 4 5 6 #使用unittest默认的加载器时,就不需要自己手动创建加载器了 7 8 #加载测试用例到测试套件中 9 suite=unittest.defaultTestLoader.discover(用例所在文件夹的路径) 10 11 with open("result.txt","w",encoding="utf-8") as f: 12 runner = unittest.TextTestRunner(stream=f,verbosity=2) 13 runner.run(suite)
生成HTML测试报告的方式
from BeautifulReport import BeautifulReport #需要自行安装此库 #1、加载测试用例到测试套件中 suite = unittest.defaultTestLoaser.discover("用例所在文件夹的路径") #运行测试用例 runner = BeautifulReport(suites=suite) runner.report(description="用例名称")
python官方文档,可以借助查看原码 https://docs.python.org/zh-cn/3/
from unittestreport import TestRunner import unittest #第一步、收集测试用例 suite = unittest.defaultTestLoader.discover("用例所在的文件夹的路径") #第二步、运行测试用例 #TestRunner()中可以修改相应的参数,进行定制化,templates参数:选择报告的模板,
#目前只有3个模板,1~3 runner = TestRunner(suite) runner.run()
unittestreport 之DataDrivenTest
import unittest from unittestreport import ddt,list_data """ 判断10组数据是否相等 11 22 11 44 22 33 44 55 66 33 """ test_case=[(11,22),(22,33),(33,33),(33,44),(33,44)] @ddt class TestDemo(unittest.TestCase): @list_data(test_case) def test_01(self,case): a , b = case self.assertEqual(a,b)