一、unittest测试框架
Unittest测试框架的原理
执行指定的测试文件,并输出相关的测试报告
Unittest测试框架的设计原理
有一个testtestrunner类,来做测试的调用和执行
可以调用一个独立的测试方法,也可以一个测试套
Unittest测试框架的使用要求
Import unittest
定义测试类需要继承unittest,class测试类名(unittest.TestCase)
Unittest测试框架的基本组成要素
setup初始化,可选,前期的初始化工作
test_xxx测试方法
tearDown进行资源回收
Unittest测试框架,三种不同框架运行方式的对比
Unittest.mian()执行
按照asc码顺序顺序执行当前文件中对应类的所有测试方法
一般测试方法定义为test_case1,test_case2.....
特点:执行当前类中的所有测试方法
Suite=unittest.TestSuite()测试套执行
声明测试套:Suite=unittest.TestSuite()
通过addtest方法添加测试用例,suite.addTest(类名(“测试方法名”))
声明测试运行对象suite=unittest.TextTestRunneer
执行测试套runner.run(suite)
执行特点:按照加载的顺序和个数进行执行
测试文件执行
声明文件所在路径
定义discover对象并打开相关的文件,discover=unittest.defaultTestLoader(文件路径,pattern=’test_*.py’)
声明测试运行对象,runner=unittest.TestTestRunner
执行测试套,runner.run(discover)
特点:执行任意指定路径下的任意相关命名的python测试脚本,执行顺序也是按照asc码进行的
二、unittest.main()框架运行,注册脚本
import unittest
import requests
# 特点是:执行当前类中的所有测试方法
class testregister(unittest.TestCase):
# 使用setup方法完成接口测试的初始化工作
def setUp(self):
self.url="http://localhost:8080/jwshoplogin/user/register.do"
self.userinfo={"username":"吴飞飞",
"password":"123456",
"email":"feifei@qq.com",
"phone":"18658194658",
"question":"最喜欢看的书",
"answer":"幸福人生"}
# 定义unittest测试方法
def test_register(self):
# 发送接口请求
s=requests.session()
response=s.post(self.url,data=self.userinfo).json()
print(response)
# result=str(response)
# r=result.find("用户名已经存在")
# if r>0:"注册接
# print(口测试通过")
# else:
# print("注册接口测试失败")
# 使用unittest框架断言来进行结果判断
self.assertIn("用户名已经存在",str(response))
if __name__ == '__main__':
unittest.main()
三、unittest.TestSuite(),测试套运行
# unittest.TestSuite(),测试套运行
# unittest测试套的便利之处是,想执行哪些方法就执行哪些方法,灵活性比较高
# 注意的点:运行模式要改为以python文件而不是测试框架模式运行
# 特点:按照加载的顺序跟个数进行执行
import unittest
import requests
class test_mulinterface(unittest.TestCase):
def setUp(self):
print("setUp")
# 定义登录测试方法
def test_case1(self):
print("登录接口")
# 定义注册测试方法
def test_case2(self):
print("注册接口")
# 定义检查测试方法
def test_case3(self):
print("检查接口")
def tearDown(self):
print("tearDown")
if __name__ == '__main__':
# 以main方法直接调用
# unittest.main()
#***************************************
# 声明测试套对象
suite=unittest.TestSuite()
suite.addTest(test_mulinterface("test_case2"))
suite.addTest(test_mulinterface("test_case3"))
# 声明测试运行对象
runner=unittest.TextTestRunner()
runner.run(suite)
四、以文件的方式进行框架的执行
import unittest
# 以文件的方式来进行框架的执行
# 声明文件所在路径
# 特点:指定任意路径下的任意相关命名的python测试脚本,执行每一个文件中的所有测试方法,顺序也是按照asc顺序执行
if __name__ == '__main__':
testdir='./'
discover=unittest.defaultTestLoader.discover(testdir,pattern='framworktest2.py')
# 声明测试运行对象
runner=unittest.TextTestRunner()
runner.run(discover)