Unittest测试框架基本使用[通俗易懂]
Unittest测试框架
1、UintTest是python内置的单元测试框架,具备编写用例、组织用例、执行用例、输出报告等自动化框架的条件
2、UintTest单元测试框架不仅适用于单元测试,还可以适用WEB自动化测试、接口自动化测试的开发与执行。用处还是比较广的
四大组件
testcase testfixture textsuite testrunner
测试套件:TestSuite
常用的方法如下: ⑴unittest.TestSuite() ①addTest():添加单个测试用例方法 ②addTests([…]):添加多个测试用例方法,方法名存在一个列表 ⑵unittest.TestLoader() ①loadTestsFromTestCase(测试类名):添加一个测试类 ②loadTestsFromModule(模块名):添加一个模块 ③discover(测试用例的所在目录):指定目录去加载,会自动寻找这个目录下所有符合命名规则的测试用例
import unittest
class Test(unittest.TestCase):
def test_1(self):
print(1)
def test_3(self):
print(3)
def test_2(self):
print(2)
def test_4(self):
print(4)
def test_5(self):
print(5)
def add(self):
print("这条样例不会被执行")
if __name__ =='__main__':
#执行全部用例
# unittest.main()
# 创建套件
suit = unittest.TestSuite()
# 添加用例
# suit.addTest(Test("test_3"))
suit.addTests([Test("test_3"),Test("test_2")])
# 执行用例
run = unittest.TextTestRunner()
run.run(suit)
测试固件:TestFixture
1、用于测试用例环境的搭建和销毁。即用例执行前的环境搭建,用例执行后环境的还原。通过覆盖TestCase的setUP()和tearDown()方法来实现
2、setUP()方法: ⑴初始化。在执行测试之前执行,用于准备本次测试所需环境 ⑵比如测试前需要登录获取token等就是测试用例需要的环境 ⑶比如在测试用例中需要访问数据库,那么可以在setUp()中建立数据库连接来进行初始化 ⑷setUP()方法中还可以用来定义一些公共的变量(数据)、代码等。这样在整个测试类中都可以调用这些公共的变量、数据
3、tearDown()方法: ⑴在执行测试之后执行,用于在下一次执行测试前还原环境(跟setUP方法差不多) ⑵tearDown()方法的过程很重要,要为下一次测试留下一个干净的环境,以免影响下一次测试 ⑶比如在tearDown()中清除数据库产生的数据,然后关闭连接
4、UintTest框架中的测试固件有两种使用方式 ⑴一种是以测试方法(类方法)为维度的setUp()和tearDown():在执行每个测试方法的前后都会执行一次 ⑵一种是以测试类(TestCase)为维度的setUpClass()和tearDownClass():在执行每个测试类的前后执行一次(测试方法前后就不会执行了)
第一种使用方式:
import unittest
class Test(unittest.TestCase):
def setUp(self) -> None:
print("打开浏览器")
def test_1(self):
print(1)
def test_3(self):
print(3)
def test_2(self):
print(2)
def tearDown(self) -> None:
print("关闭浏览器")
if __name__ =='__main__':
# 执行全部用例
unittest.main()
第二种使用方式:
import unittest
class Test(unittest.TestCase):
@classmethod # 指明这是个类方法以类为维度去执行的
def setUpClass(cls):
print("===开始执行测试===")
def test_1(self):
print(1)
def test_3(self):
print(3)
def test_2(self):
print(2)
@classmethod # 指明这是个类方法以类为维度去执行的
def tearDownClass(cls):
print("===结束执行测试===")
if __name__ =='__main__':
# 执行全部用例
unittest.main()
断言
import unittest
from selenium import webdriver
class Test(unittest.TestCase):
def setUp(self) -> None:
self.driver = webdriver.Firefox()
self.driver.get("https://www/baidu.com")
self.title = self.driver.title
print(self.title)
return self.title
def test1(self):
self.assertEqual(self.setUp(),"百度一下,你就知道")
if __name__ == '__main__':
unittest.main()
跳过测试
unittest 提供了几个装饰器用于跳过测试:
import unittest
class MyTestCase(unittest.TestCase):
# 跳过测试,参数为测试被跳过的原因
@unittest.skip("demonstrating skipping")
def test_nothing(self):
self.fail("shouldn't happen")
# 条件为真时,跳过测试
@unittest.skipIf(1>3,"if true")
def test_format(self):
print("test_format")
pass
# 除非条件为真,否则跳过测试
@unittest.skipUnless(1>3, "if not true")
def test_windows_support(self):
print("test_windows_support")
pass
if __name__ == "__main__":
unittest.main()
子测试
在一个测试中,传入不同的参数测试同一个方法,subTest 子测试可以满足这个需求,而且单个子测试的失败不影响后续子测试的执行。
import unittest
class NumbersTest(unittest.TestCase):
def test_even(self):
""" Test that numbers between 0 and 5 are all even. """
for i in range(0, 6):
with self.subTest(i==i):
self.assertEqual(i % 2, 0)
if __name__ == "__main__":
unittest.main()
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/182048.html原文链接:https://javaforall.cn
相关文章
- 五分钟学会接口自动化测试框架
- 自动化测试框架[Cypress PO模式]
- loadrunner server压力测试 sql_LoadRunner压力测试实例.pdf[通俗易懂]
- CCTalk:2022给测试人的一些建议
- 【说站】新款趣味测试小程序源码
- 自动化测试:Robot FrameWork框架99%的人都想知道的实用干货技巧!
- python unittest接口自动化测试实战_pytest测试框架从入门到精通
- 基于图像识别框架Airtest的Windows项目自动化测试实践
- 测试之路 python-flask框架:模板渲染
- 测试之路 pytest接口自动化框架-插件补充及pytest装饰器扩展
- 测试之路 pytest接口自动化框架扩展-GUI窗口
- Unittest接口和UI自动化测试框架中的发送邮件服务如何使用?
- 腾讯出品小程序自动化测试框架【Minium】系列(一)环境搭建之第一个测试程序
- 【Groovy】Groovy 扩展方法 ( 实例扩展方法配置 | 扩展方法示例 | 编译实例扩展类 | 打包实例扩展类字节码到 jar 包中 | 测试使用 Thread 实例扩展方法 )
- Spring Boot的测试框架(二)
- C++ 测试框架 GoogleTest 初学者入门篇 丙
- Linux系统性能测试与优化实践(linux系统测试)
- Linux下硬盘性能测试(linux测试硬盘)
- 测试Oracle数据库:一种必要的投资(oracle测试库)
- Linux中的iperf:网络性能测试的必备工具(iperflinux)
- 基于SSM框架和Redis缓存的测试实现(ssm redis 测试)
- 瓶颈限制Redis的压力测试(压测 redis)
- Redis读写性能承受能力测试(redis读写压力)
- SpaceX计划在7月进行星际飞船的首次轨道测试发射
- 按键测试,支持像Ctrl+Alt+Shift+T的组合键