1、导包
2、自定义测试类
3、在测试类中书写测试方法 采用print 简单书写测试方法
4、执行用例
import unittest
2、自定义测试类,需要继承unittest模块中的TestCase类即可
class TestDemo(unittest.TestCase):
书写测试方法,测试用例代码,书写要求,测试方法必须test_ 开头
def test_method1(self):
print(‘测试方法1-1’)
def test_method2(self):
print(‘测试方法1-2’)
4、执行测试用例
4.1 光标放在类后面执行所有的测试用例
4.2 光标放在方法后面执行当前的方法测试用例
说明:def 定义的test_ 是测试用例,只有执行 if __name__ == ‘___mian___’ 的时候会执行测试用例,其他普通函数则不执行,通过 self 来调用执行。
二、TestSuite(测试套件)和TestRunner(测试执行)
1、TestSuite(测试套件):用来组装,打包 ,管理多个TestCase(测试用例)文件的
2、TestRunner(测试执行):用来执行 TestSuite(测试套件的)
代码:首先要准备多个测试用例的文件才可以实现TestSuite和TestRunner,以下代码是已经准备了unittest_Demo2和unittest_Demo1两个测试用例文件
1、导包
2、实例化(创建对象)套件对象
3、使用套件对象添加用例方法
4、实例化对象运行
5、使用运行对象去执行套件对象
import unittest
from unittest_Demo2 import TestDemo
from unittest_Demo1 import Demo
suite = unittest.TestSuite()
将⼀个测试类中的所有⽅法进⾏添加
套件对象.addTest(unittest.makeSuite(测试类名))
suite.addTest(unittest.makeSuite(TestDemo))
suite.addTest(unittest.makeSuite(Demo))
4、实例化运行对象
runner = unittest.TextTestRunner();
5、使用运行对象去执行套件对象
运⾏对象.run(套件对象)
runner.run(suite)
三、TestLoader(测试加载)
说明:
-
将符合条件的测试方法添加到测试套件中
-
搜索指定目录文件下指定字母开头的模块文件下test开始的方法,并将这些方法添加到测试套件中,最后返回测试套件
-
与Testsuite功能一样,对他功能的补充,用来组装测试用例
一般测试用例是写在Case这个文件夹里面,当测试用例超多的时候就可以考虑 TestLoader
写法:
- suite = unittest.TestLoader().discover(“指定搜索的目录文件”,“指定字母开头模块文件”)
- suite = unittest.defaultTestLoader.discover(“指定搜索的目录文件”,“指定字母开头模块文件”) 【推荐】
注意:
如果使用写法1,TestLoader()必须有括号。
1. 导包
2. 实例化测试加载对象并添加用例 —> 得到的是 suite 对象
3. 实例化 运行对象
4. 运行对象执行套件对象
import unittest
实例化测试加载对象并添加用例 —> 得到的是 suite 对象
unittest.defaultTestLoader.discover(‘用例所在的路径’, ‘用例的代码文件名’)
测试路径:相对路径
测试文件名:可以使用 * 通配符,可以重复使用
suite = unittest.defaultTestLoader.discover(‘./Case’, ‘cs*.py’)
runner = unittest.TextTestRunner()
runner.run(suite)
TestSuite与TestLoader区别:
共同点:都是测试套件
不同点:实现方式不同
TestSuite: 要么添加指定的测试类中所有test开头的方法,要么添加指定测试类中指定某个test开头的方法
TestLoader: 搜索指定目录下指定字母开头的模块文件中以test字母开头的方法并将这些方法添加到测试套件中,最后返回测试套件
四、Fixture(测试夹具)
是一种代码结构,在某些特定情况下,会自动执行。
4.1 方法级别
在每个测试方法(用例代码)执行前后都会自动调用的结构
def setUp(),每个测试方法执行之前都会执行 (初始化)
def tearDown(),每个测试方法执行之后都会执行 (释放)
特性:几个测试函数,执行几次。每个测试函数执行之前都会执行 setUp,执行之后都会执行tearDwon
初始化
def setUp(self):
每个测试方法执行之前执行的函数
pass
释放
def tearDown(self):
每个测试方法执行之后执行的函数
pass
场景:当你要登录自己的用户名账户的时候,都会输入网址,当你准备不用这个页面了,都会关闭当前页面;
1、输入网址 (方法级别)
2、关闭当前页面 (方法级别)