IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> unittest自动化测试框架 -> 正文阅读

[开发测试]unittest自动化测试框架

unittest自动化测试框架

1.单元测试框架Unittest简介

单元测试:指的是在软件开发当中,对程序的最小单元(函数,方法)进行测试的过程。 unittest不仅可以用于单元测试,还可以用于自动化测试用例的开发和执行。组织执行自动 化测试用例。并且提供一些丰富的断言方法,判断用例是否通过,最终能够生成测试报告。

2.基本使用

2.1 基于Python的单元测试框架有哪些

框架名称unittestpytest
难易程度更简单,容易上手市场份额会更多
使用规则1.新建一个类,必须继承unittest.TestCase(耦合)
2.导入unitttest模块。Alt+Enter
3.测试用例必须以test_开头。
1.测试文件必须test_开头或者_test结尾。(非耦合)
2.测试类名必须Test开头
3.测试用例必须以test_开头
夹具的差异setUp/tearDown 在每个用例的前后执行
setUpClass/tearDownClass 在每个类的前后执行。
setup/teardown 在每个用例的前后执行
setup_class/teardown_class 在每个类的前后执行。
断言的差异self.assertEqual()python原生的assert
失败用例重跑差异没有支持
参数化差异ddt@pytest.mark.parametrize()

2.2 单元测试框架的作用

1.找到测试用例。根据他们的默认的测试用例的规则。(原理,底层。BAT。) 
2.执行测试用例。 
3.判断测试用例的结果。 
4.生成测试报告。 

2.3 unittest重要组件

TestCase测试用例:

TestSuite测试套件: 整理测试用例,形成一个集合。

TestLoader测试加载器: 加载测试用例套件或者测试用例。

TestFixtrue测试固件

TestRunner测试运行器:运行测试用例。

2.4 unittest如何运行测试用例

unittest的运行方式有两种:

**1.命令行的运行方式。(unittest默认的执行方式) **

python -m unittest test_api.py 
python -m unittest test_api.TestApi 
python -m unittest test_api.TestApi.test_baili 
python -m unittest -v test_api.py 
python -m unittest -v test_api.py -k *_baili 

python -m的意思就是以命令行的方式运行测试用例。

unitttest -v 表示以啰嗦的方式,详细的方式展示测试结果。

-k表示通过通配符匹配的方式去查找测试用例。

2.main方式运行

if __name__ == '__main__': 
print("-----------wwwww--------------") 
unittest.main() 

2.5 unittest的运行结果

字符含义
.代表成功。如果加了-v,那么.会变成OK
F代表用例执行失败
E出错 有异常抛出
S代表用例被跳过

2.6 unittest测试用例的执行顺序

ord() python的内置函数,作用是返回ASCII码。 根据ASCII的大小排序来执行测试用例。

2.7 多种unittest的加载方式和运行测试用例的方式

1.通过TestSuite加载多个测试用例的方式执行。

if __name__ == '__main__':  # 创建一个测试套件
    suite = unittest.TestSuite()
    # 把测试用例加载到测试套件里面
    suite.addTest(TestApi('test_01_mashang'))
    suite.addTest(TestApi('test_02_baili'))
    suite.addTest(TestWeb('test_01_login')) 
    # 执行时一定要指定套件
    unittest.main(defaultTest='suite')
if __name__ == '__main__':
    #创建一个测试套件
    suite = unittest.TestSuite()
    #把测试用例加载到测试套件里面
    testcases = [TestApi('test_01_mashang'),TestApi('test_02_baili'),TestWeb('test_01_login')] 
    suite.addTests(testcases)
    #执行时一定要指定套件
    unittest.main(defaultTest='suite')

2.加载一个目录下所有的测试用例

if __name__ == '__main__': 
    suite = unittest.defaultTestLoader.discover("./testcases", pattern='test _*.py') 
    unittest.main(defaultTest='suite')

九、为什么我们使用unittest.main()就可以执行所有的测试用例?

名称用法
TestCase测试用例
TestSuite测试套件:整理测试用例,形成一个集合。
TestLoader测试加载器:加载测试用例套件或者测试用例。
TestFixtrue测试固件
TestRunner测试运行器:运行测试用例。

如何工作.,底层原理如何实现。

类() 实例化一个对象,自动调用init方法。

module:测试用例所在的路径,__main__代表当前模块。

defaultTest:默认的待测试的测试用例或者测试套件的名称。

argv:接收外部传递给程序的参数testRunner:测试运行器

testLoader:测试加载器

exit:是否在测试用例结束之后退出程序

verbosity:显示详细信息的程度。

<0 只显示用例总数以及全局执行结果

1 默认值,显示用例总数以及全局执行结果外,还显示一个标记:

. F E,S

>=2 显示用例总数以及全局执行结果外,显示详解结果

(1)测试加载器已经初始化

1 def init(self, module=‘main’, defaultTest=None, argv=None,

2 testRunner=None, testLoader=loader.defaultTestLoader,

3 exit=True, verbosity=1, failfast=None, catchbreak=None,

4 buffer=None, warnings=None, *, tb_locals=False):

(2) 通过测试加载器加载测试用例保存到self.test

1 def createTests(self, from_discovery=False, Loader=None):

2 if self.testNamePatterns:

3 self.testLoader.testNamePatterns = self.testNamePatterns

4 if from_discovery:

5 loader = self.testLoader if Loader is None else Loader()

6 self.test = loader.discover(self.start, self.pattern, self.top)

7 elif self.testNames is None:

8 self.test = self.testLoader.loadTestsFromModule(self.module)

9 else:

10 self.test = self.testLoader.loadTestsFromNames(self.testNames,

11 self.module)

(3) 创建文本测试运行器

1 if self.testRunner is None:

2 self.testRunner = runner.TextTestRunner

最后通过:self.result = testRunner.run(self.test)执行已经加载好的测试用

例。并且把结果放到self.result

2.9unittest夹具

setUp/tearDown 在每个用例的前后执行setUpClass/tearDownClass 在每个类的前后执行。

setUpModule/tearDownModule 在每个模块的前后执行

import unittest

class TestApi(unittest.TestCase):

    def setUp(self) -> None:
        print("在每一个测试用例之前执行:打开浏览器,加载网页")

    def tearDown(self) -> None:
        print("在每一个测试用例之后执行:关闭浏览器")

    @classmethod
    def setUpClass(cls) -> None:
        print("‐‐‐‐‐‐在每个类之前执行:初始化日志对象,创建数据库连接‐‐‐‐‐‐‐‐")

    @classmethod
    def tearDownClass(cls) -> None:
        print("‐‐‐‐‐‐在每个类之后执行:销毁日志对象,销毁数据库连接‐‐‐‐‐‐‐‐")

    def test_01_mashang(self):
        print("码尚教育软件测试")

    def test_02_baili(self):
        print("码尚百里")

    def test_03_weiwei(self):
        print("码尚微微")

    def test_04_qingtian(self):
        print("码尚晴天")
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:48:43  更:2022-09-13 11:49:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 22:24:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码