| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> Python单元测试--unittest测试框架 -> 正文阅读 |
|
[开发测试]Python单元测试--unittest测试框架 |
1.?单元测试单元测试是对功能/代码的最小单元进行测试 最小单元就是函数或类中的方法 举个栗子,对一个函数进行测试
?运行结果:
不管测试的是函数,类,还是接口,都是把其放到一个函数里,作为被测内容 在python中进行测试,判断测试结果不会用if,而是用断言assert去判断
运行结果:(预期结果与实际结果一致时不会报错)
运行结果:(预期结果与实际结果不一致时会报错) 总结:当使用assert断言,如果测试通过,程序正常执行。如果测试不通过,报出AssertionError assert失败,本质上就是一个异常,异常类型AssertionError 当我们没有使用单元测试框架之前,我们确实可以做自动化测试 1、首先要写测试用例函数,手工去调用测试函数 2、当用例失败之后,需要手工去加try...,失败一个加一个,过程太麻烦了 3、怎么收集测试用例,放到一个统一的模块 4、还要手工生成测试报告 这个过程真的是好麻烦,手工处理太慢,所以我们要学习单元测试框架,来简化工作流程,uinttest可以帮我们收集测试用例,运行用例,生成测试的报告,下面就来介绍一下单元测试框架 2. assert介绍断言:判断测试用例的结果是否成功 assertEqual()断言是否相等,这个用的比较多 assertTrue()断言是否为真,这个是万能的,只要条件为真即可 assertIn()断言是否包含 assert有好多种方法,不用全都记住,只要记住assertEqual(),assertTrue()的用法即可
?运行结果: 3.?单元测试框架unittest单元测试框架本质是提供一系列工具的集合,一套解决方案,直接拿来使用,代替手工处理的步骤 unittest和pytest都是单元测试框架,unittest是python置的,不需要安装,而pytest?是第三方库,需要安装。两个功能是一样的,用法差别不大,pytest相对来说更强大,之后我会介绍 3.1?unittest的特点与作用unittest的特点:1.学习便利,2.学习成本高,需要遵守框架的规则 unittest的作用:1.收集用例,2.处理断言,3.测试报告 3. 2?unittest的几个概念test case:测试用例 test suite:测试套件/测试集 test loader:测试加载(作用是加载测试用例) test runner:运行器/执行器 fixture:夹具(作用是前置准备和后置清理) 3.2.1?test caseunittest的用法: 1.继承unittest.TestCase,编写一个test_开头的函数作为测试用例 注意:不是test开头的函数,unittest是不会去运行的,前面没有播放键 2.使用unittest运行用例,也就是点击播放键,一定要是unittest开头的(注意的是点击单条用例前的播放按钮,只运行这一条用例,点击类名前的播放按钮运行的是整个类下的测试用例) 一开始,我的怎么运行都是默认python的运行方式,不显示unittest开头的运行方式,如何去修改呢,如下操作步骤: 第一步:点击File->setting->搜索unittest,然后设置Default test runner,选择unittests 第二步:点击Run->Run...->选择Edit Configurations...(或者直接点击运行下拉框,选择Edit Configurations...)然后查看一下有没有Python tests,有这个通常就没问题,如果没有,把Python这个下的东西都删除,然后关闭pycharm,重新打开pycharm 第一步: ?第二步: ? ? 最后重新启动pychram ?3.?使用self.assertEqual(expected,actual)对比结
运行结果: 使用self.assertEqual(expected,actual)运行结果可以看到的更详细 ?3.2.2?收集用例及运行用例现在我们项目下新建一个包tests,来管理所有的测试用例,test_demo.py和 test_unittest.py下放的是所有的用例,然后再新建一个run.py来收集用例和运行用例 注意: --?管理用例的必须是要包,因为包中有__init__.py模块,如果不是包可能pychram会报错 --?run.py模块的位置,是跟tests平级的,目的是这样可以收集这个项目下的所有测试用例 具体操作流程如下: 第一步:包和模块分别新建完成,并编写了测试用例 ?test_demo.py?模块下代码如下:
?test_unittest.py?模块下代码如下:
?第二步:收集用例并运行用例 收集用例 suite = unittest.defaultTestLoader.discover('包名')?注意一定要引号包裹起来 运行用例 runner = unittest.TextTestRunner() 都是固定用法,变量名suite,runner可以随便写 run.py模块下代码如下:
运行结果: ?3.3?测试报告生成测试报告有两种方法:unittestrepor,beautifulrepor 3.3.1?unittestreporunittestrepor?有三种测试报告模板,可以选择,还可以修改测试报告格式filename,生成目录路径report_dir,报告名称title,测试人员tester等,不修改时有默认参数 修改后run.py模块下代码如下:
运行结果: ?运行后项目下会自动生成一个叫reports的目录,点击打开report.html文件,选择用浏览器的打开方式查看 修改报告的几个参数来看一下 修改后run.py模块下代码如下:
测试报告如下: ?可以看到修改的地方,已经成功 ?3.3.2?beautifulreporbeautifulrepor?只有一种测试报告模板,不能选择,也可以修改文件的路径,报告的名称等,要注意的是descrition必须填写,否则会报错 ?修改后run.py模块下代码如下:
?运行结果: 运行后项目下会自动生成一个叫report.html的文件,点击打开,选择用浏览器的打开方式查看 3. 4?安装unittestrepor第一种方法:选择File->Settings->Project->Project Interpreter:点击+号在弹出界面中搜索unittestreport,然后点击底部Install Package按钮 ? ? ? 第二种方法:切换到Terminal界面,输入pip install unittestreport,回车即可 ?安装beautifaulreport的方法跟unittestreport一样,就不介绍了 ?4. pip介绍pip是python官方的包管理工具。安装、卸载第三方的应用需要商店。如360管家。说白了也就是如果你想用别人写好的代码,就需要用pip安装 安装命令:pip install,安装一个python的软件/第三方库 pip安装应用的官方地址在国外,所以偶尔会出现报错,因此我们可以用国内镜像/国内源 国内源地址: 阿里云: http://mirrors.aliyun.com/pypi/simple/ 清华大学: https://pypi.tuna.tsinghua.edu.cn/simple/ ?中国科学技术大学 :http://pypi.mirrors.ustc.edu.cn/simple/ |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/18 0:15:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |