大鹏一日同风起,扶摇直上九万里。这篇文章主要讲述Selenium3自动化测试36单元测试Unittest相关的知识,希望能为你提供帮助。
引言同步视频知识与系列知识内容,可关注:【公众号】:柒哥测试;【WX】:Lee-890;
1. UnitTest介绍用uinittest单元测试框架可以进行web自动化测试。
由于unittest是python标准库中自带的单元测试框架,因此安装完Python后就存在,无需单独安装。
2.UnitTest核心要素unittest核心的要素是TestCase,TestSuite,TextTestRunner,Fixture。
2.1 TestCase:测试用例
- 一个TestCase就是一个测试用例。
- 一个测试用例就是一个完整的测试流程,包括测试前环境准备(SetUp),执行测试代码(run),以及测试后环境的还原(tearDown)。
- 一个测试用例就是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。用户定义测试用例需要继承TestCase类。
2.2TestSuite:测试套件一个测试套件(TestSuite)是多个测试用例的集合,是针对被测程序对应的功能和模块创建的一组测试,一个测试套件内的测试用例将一起执行。
- TestSuite()是测试用例集合;
- 通过addTest()方法手动把TestCase添加到TestSuite中,也可通过TestLoader把TestCase自动加载到TestSuite(TestCases之间不存在现后顺序)。
2.3TextTestRunner:测试执行器测试执行器负责测试执行调度并且生成测试结果给用户。
TestTestRunner是运行测试用例的驱动类,其中的run方法可以执行TestCase、TestSuite。
2.4TextTestResult:测试报告测试报告用来展示所有执行用例的成功或者失败状态的汇总,执行失败的测试步骤的预期结果与实际结果,还有整体运行状况和运行时间的汇总。
2.5Fixture:测试夹具通过使用Fixture,可以定义在单个或多个测试执行之前的准备工作和测试执行之后的清理工作。
- 对一个测试用例环境的搭建和销毁,就是一个Fixture,通过覆盖TestCase的setUp()和tearDown()方法来实现;
- 如在测试用例中需要访问数据库,那么可以在setUp()中建立数据库连接并进行初始化。测试用例执行后需要还原环境。 tearDown的过程很重要,要为以后的TestCase留下一个干净的环境。如在tearDown()中需要关闭数据库连接。
3.工作流程unittest的整个流程如下:
- 首先需要编写TestCase;
- 再把TestCase添加到TestSuite中;
- 再由TextTestRunner来执行TestSuite;
- 运行的结果保存在TextTestResult中。
整个过程集成在unittest.main模块中。 4.UnitTest案例实战 4.1UnitTest案例准备通过PyCharm在工程目录下,创建UnitTestDemo的Python package,UnitTest的案例均存放在UnitTestDemo下。
1. 创建基础待测方法
在UnitTestDemo下新建mathfunc.py文件,代码如下:
加法,返回a+b的值def add(a,b): return a+b
return a-b
乘法,返回a*b的值def multi(a,b):
return a*b
除法,返回a/b的值def divide(a,b):
return a/b
**2. 设计测试用例**
为前面的测试方法设计测试用例,在UnitTestDemo下创建test_mathfunc.py,代码如下:
import unittest
from UnitTestDemo.mathfunc import *
class TestMathFunc(unittest.TestCase):
" " " 测试mathfunc.py" " "
def test_add(self):
"""测试加法add()"""
self.assertEqual(3,add(1,2))
self.assertNotEqual(3,add(2,2))def test_minus(self):
"""测试减法minus"""
self.assertEqual(1,minus(3,2))def test_multi(self):
"""测试乘法multi"""
self.assertEqual(6,multi(2,3))def test_divide(self):
"""测试除法divide"""
self.assertEqual(2,divide(6,3))
self.assertEqual(2.5,divide(5,2))
## 4.2组织与设定测试用例的执行顺序
通过PyCharm在工程目录下,创建UnitTestDemo的Python package,UnitTest的案例均存放在UnitTestDemo下。
测试套件(TestSuite)是多个测试用例的集合,是针对被测程序的对应的功能和模块创建的一组测试。
通过TestSuite()的addTest()方法手动把TestCase添加到TestSuite中,或通过TestLoader把TestCase自动加载到TestSuite中。
**1. 创建测试套件**
执行单条用例调用addTest()方法,在UnitTestDemo下创建test_suite.py,代码如下:
import unittest
from UnitTestDemo.test_mathfunc import TestMathFunc
if name == " main" :
suite = unittest.TestSuite()
addTest()添加单个TestCase
suite.addTest(TestMathFunc("test_multi"))
runner = unittest.TextTestRunner()
runner.run(suite)
执行多条测试用例addTests()方法, test_suite.py代码如下:
import unittest
from UnitTestDemo.test_mathfunc import TestMathFunc
【Selenium3自动化测试36单元测试Unittest】if name == " main" :
suite = unittest.TestSuite()
addTest()添加单个TestCase
#suite.addTest(TestMathFunc("test_multi"))
# addTests()执行加法、减法、除法
tests = [TestMathFunc("test_add"),TestMathFunc("test_divide"),TestMathFunc("test_minus")]
suite.addTests(tests)
runner = unittest.TextTestRunner()
runner.run(suite)
----
如果你觉的文章读的不过瘾,可以查看详细的视频教程。
【2021】UI自动化测试:Selenium3自动化测试
https://edu.51cto.com/course/26488.html【测试全系列视频课程】请点击我哦…
( https://edu.51cto.com/lecturer/968349.html)
学习路线如下
![微信图片_20210816100905.png](https://s2.51cto.com/images/20210816/1629079635804582.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)![微信图片_202108161009051.png](https://s2.51cto.com/images/20210816/1629079635990692.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)![微信图片_202108161009052.png](https://s2.51cto.com/images/20210816/1629079635138091.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
图书京东、当当有售
京东: https://item.jd.com/12784287.html
当当: http://product.dangdang.com/29177828.html
![0.9733767060093851.png](https://s2.51cto.com/images/20210816/1629079289752959.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)如果你觉的文章读的不过瘾,可以查看详细的视频教程。
>
>
[《Python3+Selenium3自动化测试》精品视频课程](https://edu.51cto.com/course/26488.html)
[《全栈测试课程》精品系列课程](https://edu.51cto.com/lecturer/968349.html)学习路线如下
![微信图片_20210816100905.png](https://s2.51cto.com/images/20210816/1629079635804582.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)![微信图片_202108161009051.png](https://s2.51cto.com/images/20210816/1629079635990692.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)![微信图片_202108161009052.png](https://s2.51cto.com/images/20210816/1629079635138091.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)![0.9733767060093851.png](https://s2.51cto.com/images/20210816/1629079289752959.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)----同步视频知识与系列知识内容,可关注:【公众号】:柒哥测试;【WX】:Lee-890;
::: hljs-center![qrcode_for_gh_89e1cf643a7b_258.jpg](https://s2.51cto.com/images/20220424/1650796802803350.jpg?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=):::----
推荐阅读
- 小公司的前端建设的一些思考
- Go 语言入门很简单(正则表达式)
- Python 查找算法_众里寻他千百度,蓦然回首那人却在灯火阑珊处(线性二分,分块插值查找算法)
- [ 数据结构 -- 手撕排序算法第七篇 ] 堆及其堆排序
- 任务终止的最佳实践
- 图数据库|如何从零到一构建一个企业股权图谱系统
- Oracle密码复杂度PASSWORD_VERIFY_FUNCTION
- flask之活动多开模块包头市政府活动网站开发
- 基于大数据看全球2021年网络攻击态势