本文讲述以下几个小知识点:

  • 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框架相关推荐

  1. android冒烟测试自动化,自动化冒烟测试脚本应当遵循的原则

    自动化冒烟测试脚本应当遵循的原则 发表于:2009-06-29来源:作者:点击数: 自动化冒烟测试脚本应当遵循的原则: 1.覆盖主要功能: 冒烟测试不是 系统测试 或 集成测试 ,所以不需要面面俱到, ...

  2. 冒烟测试的7个好处,你是否经常用到它?

    以下为作者观点: 冒烟测试(smoke testing)是在开发的早期阶段评估基本的软件组件,以检查它们是否 "着火"(有问题),本文旨在介绍冒烟测试及其在程序开发过程中的作用. ...

  3. 软件测试---冒烟测试和回归测试

    什么是冒烟测试 冒烟测试是自由测试的一种,是对软件的基本功能进行测试,由开发人员与测试人员共同执行,测试对象是每一个新编译的需要正式测试的软件版本.目的是确认软件的基本功能正常,保证软件系统能正常跑起 ...

  4. python自动化框架pytest pdf_Python 自动化测试框架 unittest 和 pytest 对比

    一.用例编写规则 1.unittest提供了test cases.test suites.test fixtures.test runner相关的类,让测试更加明确.方便.可控.使用unittest编 ...

  5. python测试框架untest_Python测试框架之unittest和pytest

    目前搜狗商城接口测试框架用的是unittest+HTMLTestRunner,case数有1097条,目前运行一次自动化测试,时长约为30分钟,期望控制在10分钟或者更短的时间内.近期打算重新优化框架 ...

  6. Pytest 如何组织冒烟测试及执行冒烟用例

    Pytest 组织冒烟测试 pytest 提供了测试用例标记机制 一个测试用例允许被多个@pytest.mark进行标记 同一个@pytest.mark可以标记多个测试用例 pytest.mark常用 ...

  7. Airtest+Poco多设备并发自动化游戏测试框架(遇到的问题)

    项目:基于unity3d项目 涉及相关模块:关卡,战斗,商城,装备,强化,天赋等 记录:Airtest+poco+pycharm自动化游戏测试过程中发现的问题以及解决的方法 目标:自动化打包安装,多机 ...

  8. 接口自动化测试框架unittest和pytest差异比较

    目录 前言 一.介绍 二.用例编写 三.用例发现和执行 四.测试夹具(Fixtures) 五.跳过测试和预计失败 六.子测试 七.测试结果输出 八.unittest和pytest的区别 九.小结 前言 ...

  9. 面经-软件测试面试常见面试题全套合集系列unittest框架面试题 pytest框架面试题 性能测试面试题 4-4

    目录 前言: 十二. Unittest框架 12.1  你们自动化用例是怎么管理的? 12.2  Web UI自动化都用到过哪些库? 12.3  Unittest框架的原理? 12.4  Unitte ...

最新文章

  1. 5 个越早知道越好的 Python 特性
  2. 首次公开!阿里巴巴云原生实时数仓核心技术揭秘
  3. CSDN怎么转载别人的博客
  4. 微信官方都辟谣,可真有技术人用 AI、大数据实现头像添加圣诞帽了!
  5. Java ==和Equals方法的比较
  6. 基于相关系数的影像匹配_论文推送 | 基于最优匹配算法的像控点电子点之记制作研究...
  7. cygwin1.dll is missing from your computer
  8. scrapy 中不同页面的拼接_Python下使用Scrapy爬取网页内容的实例
  9. php wind8.5,PHPWind Forums下载
  10. WPS简历模板的图标怎么修改_研究了 2000 份 BAT 员工的简历后,我发现这 3 个共同点...
  11. Vue中的动态加载组件
  12. 自用工具 猴子都会用的unity视频播放器
  13. 打开office显示:你的office许可证有问题,你可能是盗版软件的受害者怎么办?
  14. mysql ndb存储引擎_Cluster的NDB存储引擎
  15. 去哪家期货公司如何开户?
  16. 炒菜机器人放食材的顺序_机器人能否消灭厨师这个职业?
  17. Spark面试精选题(05)
  18. 自制Runtime:虚拟执行环境设计
  19. vue项目——分类管理模块
  20. ios10 Android airplay,iOS下AirPlay投屏功能实现

热门文章

  1. 【HTML——盛开花朵】(效果+代码)
  2. NiosII 学习过程
  3. the mid-autumn festival
  4. Facial Expression Recognition based on a multi-task global-local network--论文笔记
  5. (组合游戏)SG函数与SG定理详解
  6. Codeforces Round #176 (Div. 2) D. Shifting(模拟,STLdeque应用)
  7. 【2-SAT初学+模板题讲解】POJ3683 Priest John's Busiest Day
  8. Qt 常用控件样式表及遇到的问题
  9. BUUCTF 每日打卡 2021-5-6
  10. 如何压缩图片200k以下?