用例夹具,类夹具,模块夹具及封装
用例夹具:
import unittest
import os
class TestGaigai(unittest.TestCase):
def setUp(self) -> None:
print('\nsetUp:在测试用例之前的准备工作,如:打开浏览器,加载网页')
# 测试用例
def test01_gaigai(self):
print('测试用例01')
def test02_gaigai(self):
print('测试用例02')
def test03_gaigai(self):
print('测试用例03')
def test04_gaigai(self):
print('测试用例04')
def tearDown(self) -> None:
print('tearDown:测试用例之后的扫尾工作,如:关闭浏览器')
if __name__=='__main__':
suite=unittest.TestSuite()
testcases=unittest.defaultTestLoader.discover(os.getcwd(),'*.py')
suite.addTests(testcases)
unittest.TextTestRunner(verbosity=2).run(suite)
执行结果:
Testing started at 下午2:00 ...
/Users/l/PycharmProjects/interfaceTest2/venv/bin/python /Applications/PyCharm.app/Contents/helpers/pycharm/_jb_pytest_runner.py --path /Users/l/PycharmProjects/interfaceTest2/stu_baili/test_1.py
Launching pytest with arguments /Users/l/PycharmProjects/interfaceTest2/stu_baili/test_1.py in /Users/l/PycharmProjects/interfaceTest2/stu_baili
============================= test session starts ==============================
platform darwin -- Python 3.7.0, pytest-7.1.2, pluggy-0.13.1
rootdir: /Users/l/PycharmProjects/interfaceTest2/stu_baili
plugins: xdist-2.5.0, forked-1.4.0, metadata-2.0.1, tavern-1.23.3, html-3.1.1collected 4 items
test_1.py .
setUp:在测试用例之前的准备工作,如:打开浏览器,加载网页
测试用例01
tearDown:测试用例之后的扫尾工作,如:关闭浏览器
.
setUp:在测试用例之前的准备工作,如:打开浏览器,加载网页
测试用例02
tearDown:测试用例之后的扫尾工作,如:关闭浏览器
.
setUp:在测试用例之前的准备工作,如:打开浏览器,加载网页
测试用例03
tearDown:测试用例之后的扫尾工作,如:关闭浏览器
.
setUp:在测试用例之前的准备工作,如:打开浏览器,加载网页
测试用例04
tearDown:测试用例之后的扫尾工作,如:关闭浏览器
[100%]
============================== 4 passed in 0.08s ===============================
Process finished with exit code 0
类夹具:
import unittest
import os
class TestGaigai(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
print('setUpClass:在每个类之前执行一次。如:创建数据库,生成日志对象')
def setUp(self) -> None:
print('\nsetUp:在测试用例之前的准备工作,如:打开浏览器,加载网页')
# 测试用例
def test01_gaigai(self):
print('测试用例01')
def test02_gaigai(self):
print('测试用例02')
def test03_gaigai(self):
print('测试用例03')
def tearDown(self) -> None:
print('tearDown:测试用例之后的扫尾工作,如:关闭浏览器')
@classmethod
def tearDownClass(cls) -> None:
print('tearDownClass:在每个类之后执行一次,如:关闭数据库连接,销毁日志对象')
if __name__=='__main__':
suite=unittest.TestSuite()
testcases=unittest.defaultTestLoader.discover(os.getcwd(),'*.py')
suite.addTests(testcases)
unittest.TextTestRunner(verbosity=2).run(suite)
执行结果:
Testing started at 下午2:07 ...
/Users/PycharmProjects/interfaceTest2/venv/bin/python /Applications/PyCharm.app/Contents/helpers/pycharm/_jb_pytest_runner.py --path /Users/PycharmProjects/interfaceTest2/stu_baili/test_1.py
Launching pytest with arguments /Users/PycharmProjects/interfaceTest2/stu_baili/test_1.py in /Users/PycharmProjects/interfaceTest2/stu_baili
============================= test session starts ==============================
platform darwin -- Python 3.7.0, pytest-7.1.2, pluggy-0.13.1
rootdir: /Users/ligaijiang/PycharmProjects/interfaceTest2/stu_baili
plugins: xdist-2.5.0, forked-1.4.0, metadata-2.0.1, tavern-1.23.3, html-3.1.1collected 3 items
test_1.py setUpClass:在每个类之前执行一次。如:创建数据库,生成日志对象
.
setUp:在测试用例之前的准备工作,如:打开浏览器,加载网页
测试用例01
tearDown:测试用例之后的扫尾工作,如:关闭浏览器
.
setUp:在测试用例之前的准备工作,如:打开浏览器,加载网页
测试用例02
tearDown:测试用例之后的扫尾工作,如:关闭浏览器
.
setUp:在测试用例之前的准备工作,如:打开浏览器,加载网页
测试用例03
tearDown:测试用例之后的扫尾工作,如:关闭浏览器
tearDownClass:在每个类之后执行一次,如:关闭数据库连接,销毁日志对象
[100%]
============================== 3 passed in 0.08s ===============================
Process finished with exit code 0
模块夹具:
import unittest
import os
def setUpModule():
print('模块级的夹具开始')
def tearDownModule():
print('模块级的夹具结束')
class TestGaigai(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
print('setUpClass:在每个类之前执行一次。如:创建数据库,生成日志对象')
def setUp(self) -> None:
print('\nsetUp:在测试用例之前的准备工作,如:打开浏览器,加载网页')
# 测试用例
def test01_gaigai(self):
print('测试用例01')
def test02_gaigai(self):
print('测试用例02')
def test03_gaigai(self):
print('测试用例03')
def tearDown(self) -> None:
print('tearDown:测试用例之后的扫尾工作,如:关闭浏览器')
@classmethod
def tearDownClass(cls) -> None:
print('tearDownClass:在每个类之后执行一次,如:关闭数据库连接,销毁日志对象')
class Test2(unittest.TestCase):
def test_login(self):
print('测试登录')
if __name__=='__main__':
suite=unittest.TestSuite()
testcases=unittest.defaultTestLoader.discover(os.getcwd(),'*.py')
suite.addTests(testcases)
unittest.TextTestRunner(verbosity=2).run(suite)
执行结果
Testing started at 下午2:13 ...
/Users/PycharmProjects/interfaceTest2/venv/bin/python /Applications/PyCharm.app/Contents/helpers/pycharm/_jb_pytest_runner.py --path /Users/PycharmProjects/interfaceTest2/stu_baili/test_1.py
Launching pytest with arguments /Users/PycharmProjects/interfaceTest2/stu_baili/test_1.py in /Users/PycharmProjects/interfaceTest2/stu_baili
============================= test session starts ==============================
platform darwin -- Python 3.7.0, pytest-7.1.2, pluggy-0.13.1
rootdir: /Users/PycharmProjects/interfaceTest2/stu_baili
plugins: xdist-2.5.0, forked-1.4.0, metadata-2.0.1, tavern-1.23.3, html-3.1.1collected 4 items
test_1.py 模块级的夹具开始
setUpClass:在每个类之前执行一次。如:创建数据库,生成日志对象
.
setUp:在测试用例之前的准备工作,如:打开浏览器,加载网页
测试用例01
tearDown:测试用例之后的扫尾工作,如:关闭浏览器
.
setUp:在测试用例之前的准备工作,如:打开浏览器,加载网页
测试用例02
tearDown:测试用例之后的扫尾工作,如:关闭浏览器
.
setUp:在测试用例之前的准备工作,如:打开浏览器,加载网页
测试用例03
tearDown:测试用例之后的扫尾工作,如:关闭浏览器
tearDownClass:在每个类之后执行一次,如:关闭数据库连接,销毁日志对象
.测试登录
模块级的夹具结束
[100%]
============================== 4 passed in 0.19s ===============================
Process finished with exit code 0
夹具的二次封装,包jiajuercifengzhuang下包括:
all.py
import unittest
import os
if __name__=='__main__':
suite=unittest.TestSuite()
testcases=unittest.defaultTestLoader.discover(os.getcwd(),'*.py')
suite.addTests(testcases)
unittest.TextTestRunner(verbosity=2).run(suite)
my_unit.py
import unittest
class MyUnit(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
print('setUpClass:在每个类之前执行一次。如:创建数据库,生成日志对象')
def setUp(self) -> None:
print('\nsetUp:在测试用例之前的准备工作,如:打开浏览器,加载网页')
def tearDown(self) -> None:
print('tearDown:测试用例之后的扫尾工作,如:关闭浏览器')
@classmethod
def tearDownClass(cls) -> None:
print('tearDownClass:在每个类之后执行一次,如:关闭数据库连接,销毁日志对象')
test_1.py
from stu_baili.jiajuercifengzhuang.my_unit import MyUnit
class TestGaigai(MyUnit):
# 测试用例
def test01_gaigai(self):
print('测试改改01')
def test02_gaigai(self):
print('测试改改02')
def test03_gaigai(self):
print('测试改改03')
test_2.py
from stu_baili.jiajuercifengzhuang.my_unit import MyUnit
class Test2(MyUnit):
def test01_niuniu(self):
print('测试牛牛01')
def test02_niuniu(self):
print('测试牛牛02')
执行结果:
/Users/PycharmProjects/interfaceTest2/venv/bin/python /Users/PycharmProjects/interfaceTest2/stu_baili/jiajuercifengzhuang/all.py
setUpClass:在每个类之前执行一次。如:创建数据库,生成日志对象
setUp:在测试用例之前的准备工作,如:打开浏览器,加载网页
测试改改01
tearDown:测试用例之后的扫尾工作,如:关闭浏览器
setUp:在测试用例之前的准备工作,如:打开浏览器,加载网页
测试改改02
tearDown:测试用例之后的扫尾工作,如:关闭浏览器
setUp:在测试用例之前的准备工作,如:打开浏览器,加载网页
测试改改03
tearDown:测试用例之后的扫尾工作,如:关闭浏览器
test01_gaigai (test_1.TestGaigai) ... ok
test02_gaigai (test_1.TestGaigai) ... ok
test03_gaigai (test_1.TestGaigai) ... ok
tearDownClass:在每个类之后执行一次,如:关闭数据库连接,销毁日志对象
test01_niuniu (test_2.Test2) ... ok
test02_niuniu (test_2.Test2) ... ok
setUpClass:在每个类之前执行一次。如:创建数据库,生成日志对象
----------------------------------------------------------------------
setUp:在测试用例之前的准备工作,如:打开浏览器,加载网页
Ran 5 tests in 0.000s
测试牛牛01
tearDown:测试用例之后的扫尾工作,如:关闭浏览器
setUp:在测试用例之前的准备工作,如:打开浏览器,加载网页
测试牛牛02
tearDown:测试用例之后的扫尾工作,如:关闭浏览器
tearDownClass:在每个类之后执行一次,如:关闭数据库连接,销毁日志对象
OK
Process finished with exit code 0