自动化冒烟测试:Unittest vs Pytest框架
本文讲述以下几个小知识点:
1、Unittest 如何组织冒烟用例
2、Pytest 组织冒烟测试
3、Pytest 执行unittest冒烟用例
环境准备:
Python 3.x
Pytest 5.x
项目目录:
smoke_testing_demo
test_case
__init__.py
test_case_with_unittest.py
test_case_with_pytest.py
run_unittest_smoke_testing.py
目录
一、Unittest如何组织冒烟用例
二、Pytest 组织冒烟测试
三、Pytest 执行 Unittest冒烟用例
学习资源分享
一、Unittest如何组织冒烟用例
当 import unittest 时 ,会自动导入TestLoader类
TestLoader这个类下,封装了 5 种组织用例的方法
本文主要讲解 loadTestsFromNames
loadTestsFromNames 方法简介
# loader.py 该文件在python3.7已不存在,建议使用python3.64 查看使用方法class TestLoader(object):"""该类负责根据各种标准加载测试并将它们包装在TestSuite中"""def loadTestsFromNames(self, names, module=None):"""返回给定的一组用例名的测试用例的套件"""
loadTestsFromNames 组织冒烟用例
# test_case_with_unittest.py#!/usr/bin/env python3
# encoding:utf-8import unittest
class TestUittestCase(unittest.TestCase):def test_case_with_unittest_1(self):'''冒烟测试用例'''print('I am Smoke Testing ')def test_case_with_unittest_2(self):passif __name__ == '__main__':unittest.main(verbosity=2)
# test_case_with_unittest2.py#!/usr/bin/env python3
# encoding:utf-8import unittestclass TestUittestCase2(unittest.TestCase):def test_case_with_unittest_3(self):'''冒烟测试用例'''print('I am Smoke Testing ')def test_case_with_unittest_4(self):passif __name__ == '__main__':
unittest.main(verbosity=2)
冒烟测试用例集
# run_unittest_smoke_testing.py#!/usr/bin/env python3
# encoding:utf-8import unittestcases = [
'test_case.test_case_with_unittest2.TestUittestCase2.test_case_with_unittest_3',
'test_case.test_case_with_unittest.TestUittestCase.test_case_with_unittest_1'
]
test_suit = unittest.TestLoader().loadTestsFromNames(cases)
runner = unittest.TextTestRunner(verbosity=2)
runner.run(test_suit)
运行结果
test_case_with_unittest_3(test_case.test_case_with_unittest2.TestUittestCase2)
冒烟测试 ... ok
test_case_with_unittest_1 (test_case.test_case_with_unittest.TestUittestCase)
冒烟测试 ... ok
----------------------------------------------------------------------
Ran 2 tests in 0.000s
小结:
通过loadTestsFromNames 可以从不同的模块组织特定的用例集
使用loadTestsFromNames这个方法,需要传入一个数组
数组里面里面的元素必须是字符串
数组元素传入格式:'moudleName.testCaseClassName.testCaseName'
执行用例是根据数组元素的的顺序执行
二、Pytest 组织冒烟测试
pytest 提供了测试用例标记机制
一个测试用例允许被多个@pytest.mark进行标记
同一个@pytest.mark可以标记多个测试用例
pytest.mark常用于冒烟测试用例组织
pytest.mark 组织冒烟用例
# run_unittest_smoke_testing.py#!/usr/bin/env python3
# encoding:utf-8import pytest@pytest.mark.test_env
def test_case_1():pass@pytest.mark.test_env
@pytest.mark.smoke
def test_case_2():''' 冒烟用例'''pass
cd 进入 /test_case目录, 使用命令行运行 test_case_with_pytest.py
pytest test_case_with_pytest.py -v -m smoke
运行结果
collected 2 items
test_case_with_pytest.py::test_case_2 PASSED============================== 1 tests deselected ==============================
==================== 1 passed, 1 deselected in 0.01 seconds ====================
运行被标记test_env的用例
pytest test_case_with_pytest.py -v -m test_env
运行结果
collected 2 items
test_case_with_pytest.py::test_case_1 PASSED
test_case_with_pytest.py::test_case_2 PASSED
=========================== 2 passed in 0.01 seconds ===========================
三、Pytest 执行 Unittest冒烟用例
Pytest测试框架是兼容Python自带的Unittest, 修改test_case_with_unittest2.py
# test_case_with_unittest2.py#!/usr/bin/env python3
# encoding:utf-8import unittest
import pytestclass TestUittestCase2(unittest.TestCase):@pytest.mark.smoke
def test_case_with_unittest_3(self):'''冒烟测试用例'''print('I am Smoke Testing ')def test_case_with_unittest_4(self):passif __name__ == '__main__':unittest.main(verbosity=2)
命令行运行 test_case_with_unittest2.py
pytest test_case_with_unittest2.py -v -m smoke
运行结果
collected 2 items / 1 deselected / 1 selected
test_case_with_unittest2.py::TestUittestCase2::test_case_with_unittest_3 PASSED [100%]============== 1 passed, 1 deselected, 1 warnings in 0.01 seconds ==============
总结:
1、Uittest组织冒烟用例,需通过loadTestsFromNames在不同的测试模块里指定测试用例,组装成test suit(测试套件)后,给TextTestRunner运行。
2、Pytest组织冒烟用例,只需给测试用例加上@pytest.mark.key ,使用命令行
pytest -m key test_case.py
即可。使用Uittest组织冒烟测试,关注点有至少有两个: 1、当编写新功能的冒烟测试,需要去维护冒烟测试用例集;2、合并代码时,如果有两个人同时修改了这个冒烟用例集,还要解决冲突,防止遗漏冒烟用例
使用Pytest组织冒烟测试,关注点在于用例的本身,当编写新功能的冒烟测试,只需在给用例加一个编写用例人员约定好的@pytest.mark,例如@pytest.mark.smoke。
学习资源分享
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……
自动化冒烟测试:Unittest vs Pytest框架相关推荐
- android冒烟测试自动化,自动化冒烟测试脚本应当遵循的原则
自动化冒烟测试脚本应当遵循的原则 发表于:2009-06-29来源:作者:点击数: 自动化冒烟测试脚本应当遵循的原则: 1.覆盖主要功能: 冒烟测试不是 系统测试 或 集成测试 ,所以不需要面面俱到, ...
- 冒烟测试的7个好处,你是否经常用到它?
以下为作者观点: 冒烟测试(smoke testing)是在开发的早期阶段评估基本的软件组件,以检查它们是否 "着火"(有问题),本文旨在介绍冒烟测试及其在程序开发过程中的作用. ...
- 软件测试---冒烟测试和回归测试
什么是冒烟测试 冒烟测试是自由测试的一种,是对软件的基本功能进行测试,由开发人员与测试人员共同执行,测试对象是每一个新编译的需要正式测试的软件版本.目的是确认软件的基本功能正常,保证软件系统能正常跑起 ...
- python自动化框架pytest pdf_Python 自动化测试框架 unittest 和 pytest 对比
一.用例编写规则 1.unittest提供了test cases.test suites.test fixtures.test runner相关的类,让测试更加明确.方便.可控.使用unittest编 ...
- python测试框架untest_Python测试框架之unittest和pytest
目前搜狗商城接口测试框架用的是unittest+HTMLTestRunner,case数有1097条,目前运行一次自动化测试,时长约为30分钟,期望控制在10分钟或者更短的时间内.近期打算重新优化框架 ...
- Pytest 如何组织冒烟测试及执行冒烟用例
Pytest 组织冒烟测试 pytest 提供了测试用例标记机制 一个测试用例允许被多个@pytest.mark进行标记 同一个@pytest.mark可以标记多个测试用例 pytest.mark常用 ...
- Airtest+Poco多设备并发自动化游戏测试框架(遇到的问题)
项目:基于unity3d项目 涉及相关模块:关卡,战斗,商城,装备,强化,天赋等 记录:Airtest+poco+pycharm自动化游戏测试过程中发现的问题以及解决的方法 目标:自动化打包安装,多机 ...
- 接口自动化测试框架unittest和pytest差异比较
目录 前言 一.介绍 二.用例编写 三.用例发现和执行 四.测试夹具(Fixtures) 五.跳过测试和预计失败 六.子测试 七.测试结果输出 八.unittest和pytest的区别 九.小结 前言 ...
- 面经-软件测试面试常见面试题全套合集系列unittest框架面试题 pytest框架面试题 性能测试面试题 4-4
目录 前言: 十二. Unittest框架 12.1 你们自动化用例是怎么管理的? 12.2 Web UI自动化都用到过哪些库? 12.3 Unittest框架的原理? 12.4 Unitte ...
最新文章
- 5 个越早知道越好的 Python 特性
- 首次公开!阿里巴巴云原生实时数仓核心技术揭秘
- CSDN怎么转载别人的博客
- 微信官方都辟谣,可真有技术人用 AI、大数据实现头像添加圣诞帽了!
- Java ==和Equals方法的比较
- 基于相关系数的影像匹配_论文推送 | 基于最优匹配算法的像控点电子点之记制作研究...
- cygwin1.dll is missing from your computer
- scrapy 中不同页面的拼接_Python下使用Scrapy爬取网页内容的实例
- php wind8.5,PHPWind Forums下载
- WPS简历模板的图标怎么修改_研究了 2000 份 BAT 员工的简历后,我发现这 3 个共同点...
- Vue中的动态加载组件
- 自用工具 猴子都会用的unity视频播放器
- 打开office显示:你的office许可证有问题,你可能是盗版软件的受害者怎么办?
- mysql ndb存储引擎_Cluster的NDB存储引擎
- 去哪家期货公司如何开户?
- 炒菜机器人放食材的顺序_机器人能否消灭厨师这个职业?
- Spark面试精选题(05)
- 自制Runtime:虚拟执行环境设计
- vue项目——分类管理模块
- ios10 Android airplay,iOS下AirPlay投屏功能实现
热门文章
- 【HTML——盛开花朵】(效果+代码)
- NiosII 学习过程
- the mid-autumn festival
- Facial Expression Recognition based on a multi-task global-local network--论文笔记
- (组合游戏)SG函数与SG定理详解
- Codeforces Round #176 (Div. 2) D. Shifting(模拟,STLdeque应用)
- 【2-SAT初学+模板题讲解】POJ3683 Priest John's Busiest Day
- Qt 常用控件样式表及遇到的问题
- BUUCTF 每日打卡 2021-5-6
- 如何压缩图片200k以下?