框架:为解决一类事情的功能合集
unittest框架:python自带的单元测试框架,不需额外下载
好处:能组织多个用例去执行,能用断言,能生成测试报告 自动化测试(接口自动化,UI自动化)
核心要素:
TestCase测试用例 ,用来书写真正的用例代码(脚本)
1.导包UnitTest
2.定义测试方法类,只需要让类继承unittest.TestCase类,就是测试类
class TestDemo(unittest.TestCase):
3.书写测试方法,真正的用例方法,必须以test开头
def Testxxx():
4.执行
在类名或者方法名后面右键执行
在主程序中调用unittest.main()
if __name__=='__main__':
unittest.main()
"学习TestCase的使用"
import unittest
class TestDemo(unittest.TestCase):
def testadd(self):
print("测试方法1")#写真实用例
def testmethod2(self):
print("测试方法2")
if __name__=='__main__':
unittest.main()
可能出现的错误:名字带中文,右键运行没有unittest for ...
批量执行测试用例(TestSuite必须和TestRunner一起)
TestSuite测试套件,用来组装(打包)testcase的,将多个测试脚本文件组装一起
1.导包unittest
2.实例化套件对象 unittest.TestSuite()
3.添加用例方法suite.addtest(类名("方法名")
3.1使用套件对象.addTest(测试类名(测试方法名))#建议复制
suite.addTest(TestDemo1())
TestRunner测试运行,用来执行TestSuite
1.导包unittest
2.实例化执行对象unittest.TextTestRunner()
3.执行对象执行套件对象 执行对象.run(套件对象)
整体步骤:
1.导包unittest
2.实例化套件对象unittest.TestSuite()
3.添加用例方法
3.1一次添加一个测试用例suite.addTest(TestDemo2("test_method2"))
3.2一次添加整个测试类
suite.addTest(unittest.makeSuite(测试类名))
4.实例化执行对象 runner=unittest.TextTestRunner()
5.执行套件对象runner.run(suite)
测试结果查看:
TestLoader测试加载,是对TestSuite功能的补充,用来组装testcase的
作用和testsuite一样,同样需要使用TextTestRunner()去执行
1.导包import unittest
2.实例化TestLoader加载对象并加载用例
suite=unittest.TestLoader().discover('路径','文件名')
3.实例化执行对象
unittest.TextTestRunner().run(suite)
Fixture测试夹具 ,是一种代码结构,书写前置方法和后置代码,只写一遍
代码结构,在用例执行前后自动执行的代码结构
网站登录
1.打开浏览器(1次)
2.打开网页,点击登录(每次)
3.输入用户密码验证码,点击登录(每次)
4.关闭页面(每次)
2.打开网页,点击登录(每次)
3.输入用户密码验证码,点击登录(每次)
4.关闭页面(每次)
5.关闭浏览器(1次)
方法级别fixture
在每个用例执行前后自动调用,方法名固定的
def setup(self):#前置
pass
def tearDown(self):#后置
pass
类级别Fixture
在类中所有的测试方法执行前后会自动执行的代码,执行1次
#类级别的Fixture需要写作类方法
@classmethod
def setupClass(cls):#类前置
pass
@classmethod
def tearDownClass(cls):类后置
pass
##类前置 方法前置 用例 方法后置 方法前置 用例 方法后置... 类后置
模块级别Fixture 就是代码文件(了解即可)
##类外部定义
def setupMoudle():
pass
def tearDownMoudle():
pass
断言
判断是否符合预期结果
用于TestCase之中,
参数化 将数据定义到json文件
通过参数的方式来传递数据,从而实现数据和脚本分离,并实现用例的重复执行
unittest测试框架不支持,所以需要安装扩展parameterrized
使用
1.导包 from parameterized import parameterized
2.修改测试方法 将测试方法中的测试数据使用变量表示
3.组织测试数据 格式【(),(),()】一个元组就是一组测试数据
4.参数化,在测试方法上方使用装饰器@parameterized.expand(测试数据)
5.运行(TestCase /TestSuite运行)
绝对路径名
获取文件所在路径