unitTest:
通过直接导入UnitTest包即可实现
主要用于管理测试用例和实现数据驱动
一、unittest单元测试框架和自动化测试框架的关系
单元测试:指的是针对我们程序的最小单元(方法)进行测试。
unittest它是自动化框架的重要组成部分之一。
Pom,是自动化框架的重要组成部分之一
ddt数据驱动,是自动化框架的重要组成部分之一
全局配置文件封装,是自动化框架的重要组成部分之一
selenium二次封装,是自动化框架的重要组成部分之一
日志监控,是自动化框架的重要组成部分之一
断言,邮件发送。。。。。。
二、单元测试框架对比
基于python语言:unittest和pytest
基于java语言:junit和estng
1、用例编写规则
unittest:提供了testcases测试用例、testsuits测试事件、testfixtures测试固件或夹具、testloader测试加载器、 testrunner测试运行器。必须遵守以下规则:
(1)测试文件必须先导入import unittest
(2)测试类必须继承unittest.TestCase
(3)测试方法必须以test开头
Pytest:它是python的第三方测试框架。基于unittest的扩展框架,必须遵守以下规则:
(1)测试文件名必须以test_开头或者_test结尾。
(2)测试类命令必须以Test开头
(3)测试方法必须test开头
2、用例的前置和后置
Unittest:
setUp/teatDown 在每个用例之前或之后运行一次。
打开浏览器,加载网页/关闭网页,关闭浏览器
setUpClass/tearDownClass 在每个类运行之前或之后运行一次
创建数据库连接,创建日志对象/关闭数据库连接,销毁日志对象
setUpModule/tearDownModule 在每个模块之前和之后执行一次
Pytest:(在类的里面属于方法,类的外面属于函数)
方法级:setup_mothod/teardown_mothod 在方法之前和之后
setup/teardown
函数级:setup_function/teardown_function 在函数之前和之后
类级:
setup_class/teardown_class 在类之前和之后
模块:
setup_module/teardown_module
还有,还可以在函数之前加@pytest.fixture()
3、断言
unittest:assertTrue、assertEqual、assertln
pytest:assert
4、报告
unittest:htmltestrunner
pytest:插件:pytest-HTML、allure
5、失败重跑
unittest:没有
pytest:pytest_runnfailures插件
6、数据驱动
Unittest:ddt
Pytest:@pytest.mark.parametrize装饰器
7、用例分类执行
unittest默认执行所有,也可以通过testsuite来执行部分用例,或者-k参数。
Pytest:@pytest.mark
三、unittest框架主要做了什么?
1、测试发现:从多个py文件中收集并且加载测试用例
2、测试执行:将测试用例按照一定的顺序和条件去执行并且生成结果
3、测试判断:通过断言去判断结果是否正确
4、测试报告:统计测试进度,通过率,生成报告
四、unittest重要组件
1.TestCase
2.TestSuite
3.TestFixture
4.TestLoader
5.TestRunner