首页 > 其他分享 >unittest-26-通过命令行执行测试(1)-指定测试对象

unittest-26-通过命令行执行测试(1)-指定测试对象

时间:2024-12-16 11:57:56浏览次数:11  
标签:26 路径 测试 unittest py 模块 测试方法

1、前置准备

参考:
  • 官方地址:https://docs.python.org/zh-cn/3.11/library/unittest.html#command-line-interface
  • 官方简要说明:unittest 模块可以通过命令行运行模块、类和独立测试方法的测试
  • 个人对应视频:https://www.bilibili.com/video/BV1sLYQe8EN7?vd_source=08c71734f77982d07d5229c567db82aa&p=39&spm_id_from=333.788.videopod.episodes
检查 python 环境,查看版本
  • 命令: python --version
  • 由于 unittest 是内置于 Python 中,因此 Python 环境如果正常,unittest 一般不会出问题。
准备试验环境:
  • 父目录(包):ex_07
    • 模块文件: testA.py,一个标准测试用例,两个测试方法
    • 模块文件: testB.py,一个返回测试套件的函数
  • 子目录(包):ex_sub
    • 模块文件: testC.py,一个标准测试用例,两个测试方法
    • 模块文件: testD.py,一个标准测试用例,两个测试方法

 

2、查看命令行使用帮助

先从命令行自带的帮助说起:
  • 查看帮助命令: python -m unittest -h
    • 选项 -m :python 命令的选项,告诉 Python 解释器运行一个库模块作为脚本。在这里指示为让 Python 运行 unittest 模块。
    • 选项 -h: unittest 命令的选项,查看 unittest 命令的帮助
  • unittest 使用命令行方式运行,有两种运行方法
    • ① 执行测试列表(暂且称之为通用方式)
      • 核心参数:tests
        • 即:执行指定测试列表,可以是 [ “模块”, “测试类”, “测试方法”, “测试套件” ]
      • 基本用法:python -m unittest tests
    • ② 探索性测试
      • 即通过前面文章提到过的 discover() 方法,指定搜寻目录后,由 unittest 自行递归搜索测试并执行
        • discover(self, start_dir, pattern='test*.py', top_level_dir=None)
      • 基本用法:python -m unittest discover -s xxx
      • 核心选项:
        • 选项 -s:指定探索的开始目录。默认为当前目录(.)
        • 选项 -p:匹配测试的模块名称。默认为“test*.py”
        • 选项 -t:指定探索的顶级目录。默认为开始目录
        • 注意:对于测试发现,所有测试模块都必须可以从项目的顶级目录导入。
    • 通用选项(红色是重点选项)
      • -h:查看帮助
      • -v:输出时显示详细信息
      • -q:静默模式运行测试,将减少其输出到最低限度,通常只会显示失败和错误信息
        - --locals:在测试失败输出堆栈跟踪信息时,显示局部变量
      • -f, --failfast:当出现第一个错误或者失败时,停止运行测试。
      • -b,--buffer:在测试运行时,标准输出流与标准错误流会被放入缓冲区。成功的测试的运行时输出会被丢弃;测试不通过时,测试运行中的输出会正常显示,错误会被加入到测试失败信息。
      • -c, --catch:当测试正在运行时, Control-C 会等待当前测试完成,并在完成后报告已执行的测试的结果。当再次按下 Control-C 时,引发平常的 KeyboardInterrupt 异常。
      • -k:只运行匹配模式或子字符串的测试方法和类。 此选项可以被多次使用,在此情况下将会包括匹配任何给定模式的所有测试用例。
        • 包含通配符(*)的模式使用 fnmatch.fnmatchcase() 对测试名称进行匹配。另外,该匹配是大小写敏感的。
        • 匹配模式下对测试加载器导入的测试方法全名进行匹配。
        • 例如,-k foo 可以匹配到 foo_tests.SomeTest.test_something 和 bar_tests.SomeTest.test_foo ,但是不能匹配到 bar_tests.FooTest.test_something

3、通用执行方式

3.1、执行测试模块

位置参数 tests 使用 “模块”:
  • 如果是 Windows 系统,保证切换到被测模块所在盘符
  • 模块写法
    • 可以使用 “全路径(路径+全文件名)” 方式指定,即类似: D:\xxx\yyy\test_a.py
      • 注意,这种方式最后部分必须写扩展名(.py)
    • 可以使用 “点” 连接方式指定,即类似: xxx.yyy.test_a
      • 注意,这种方式最后部分不要写扩展名(.py)
指定模块的几种方式对比:

3.2、执行测试类

如果象执行模块一样,直接使用绝对路径的写法,在最后位置添加 “测试类”,执行会报错 所以,要把路径改成以 “点” 连接的方式,即: xxx.yyy.模块名.测试类名

3.3、执行测试方法

最后部分为 “测试方法” 名称即可

3.4、执行测试套件

按以上的试验结构,此处指定执行 “测试套件” 失败
  • 原因:定义测试套件的文件中,又导入了其它目录下的模块文件,命令行找不到该导入文件的位置,即:
    • 当前路径是D盘根目录: D:\
    • 导入的文件夹 ex_07,无法通过当前路径找到,即: D:\ex_07 这个是无效路径
解决方法:切换当前目录
  • 将当前路径切换到 Temp 目录(也是 PyCharm 中的项目根路径)
  • 而 ex_07 目录就在该跟目录下,即: .....\Temp\ex_07 这个路径就是有效路径了

3.5、混合执行

以上测试对象可以混合到一起执行,如下:
  • 当前路径:项目根路径
  • 测试对象表示方法:以 “点” 连接方式

标签:26,路径,测试,unittest,py,模块,测试方法
From: https://blog.csdn.net/weixin_42007999/article/details/144503246

相关文章

  • 客观看待“去测试化”的论调
    看到这样一个很有意思的问题:研发负责人明年规划去掉测试岗位,QA工作由研发来负责。但当前团队的自动化测试覆盖度不足,短期还需要大量的手工执行测试用例,该怎么办?诚然,这几年经济和就业形势很差,导致很多公司开始玩降本增效的策略。对普通打工人来说,工作时间没见降低,工作强度和压力......
  • 负载测试
    本文为英文资料翻译中文,来自Grafana的官网[1],供学习了解,感兴趣的可以阅读原文负载测试曾经是指定QA团队的严格职责——开发人员编写代码,然后将其交给QA,以查看其在压力下的表现。但如今这种情况很少见,因为在更快、更迭代的软件开发周期中,开发和运营变得越来越一致。因此,您可能......
  • Xinference环境搭建&推理测试
    引子写了很多篇开源大模型的环境部署与推理搭建,截止到目前,开源大模型已经发展较为完善。个人觉得,产品和项目维度来看更多的是如果去落地实现,也就是大模型的最后一公里的应用开发。最近看到Xinference一个开源很火的推理框架。OK,那就让我们开始吧。一、框架介绍Xinference:一款性......
  • 车载以太网TSN设计及测试解决方案
    概述    智能汽车电子电气架构全面向中央+区域式发展,车载通信新技术是新架构技术栈的重要组成部分。车载以太网时间敏感网络TSN技术凭借其低延时、高可靠的特点获得多家OEM的认可。依赖多年技术研发及数十个项目的实践积累,经纬恒润可为客户提供全面、专业且本土化的TSN设......
  • 神了,Chrome 这个记录器简直是开发测试提效神器 转载
    在开发工作中,你是否遇到过这样的场景:当你需要开发某个功能时,这个功能依赖一系列的点击或者选择操作,才能获取到最终的数据。而在开发和调试的过程中,你往往需要多次验证流程的正确性。早期的时候,这种验证通常非常繁琐——你可能需要反复提交表单、重新执行操作流程,才能完成一次完......
  • 渗透测试0day漏洞库-威胁情报库-每日更新1day 0day漏洞通知
      渗透测试0day漏洞库-威胁情报库-每日更新1day0day漏洞通知0x01简介        星球拥有1day/0day漏洞文库(每周一至周五更新1day/0day漏洞),2024漏洞文库已更新POC2500+,如果你想学习更多渗透挖洞技术/技巧欢迎加入我们内部星球可获得内部工具字典和享受内部资源,2024H......
  • 【软件工程】第九章·系统测试(因果图全解析)
    ......
  • 你觉得前端有必要做单元测试吗?
    是的,前端开发有必要做单元测试。以下是一些支持这一观点的理由:代码质量保障:单元测试是检查代码质量的有效手段。通过编写测试用例,可以确保代码的各个部分(如函数、组件等)按预期工作。这有助于在开发早期发现并修复潜在的问题,从而提高代码的稳定性和可靠性。减少bug数量:通过自......
  • 前端如何做单元测试?
    前端单元测试是确保前端代码质量和稳定性的重要环节。以下是进行前端单元测试的一些关键步骤和最佳实践:选择测试框架:根据项目需求和团队熟悉程度,选择一个适合的测试框架。流行的前端单元测试框架包括Jest、Mocha、Jasmine等。这些框架提供了测试运行、断言库集成、测试报告生成......
  • 树形dp专项测试1
    A.PromisesICan'tKeep题目意为求以每个点为根时的期望得分的最大值,换根DP即可。式子不太难推,半个小时就出来了。太长了不往这写了。Code#include<bits/stdc++.h>#definelllonglong#defineilinline#defineread(x){\ charch;\ intfu=1;\ while(!isdigit(ch......