前几天,在一个群里,一个人问了,这样一个问题。说他面试遇到一个面试官,问他,为啥unittest的测试用例要用test 开头,能不能定制化。他不知道为啥。

看到这个题目,我回答当然可以了,可以用leizi开头。 可能你不信,那么今天雷子来给你实现下。看我说的是不是真的。那么我来实现下,我不修改前,看看用leizi开头命名的测试用例是否可以执行。

import  unittest
class testone(unittest.TestCase):
  def leizi1(self):
   self.assertTrue(True)
   def leizi2(self):
   self.assertTrue(True)
   def testone(self):
      self.assertTrue(True)
if __name__=="__main__":
unittest.main()

  


运行:

就运行了一个测试用例。leizi开头的测试用例没有执行。我要变,我要让它只执行leizi开头的测试用例。

经过我的修改,我们看下,还是上面的测试用例,我们看下执行结果

执行了两个测试用例,到底是不是leizi开头的呢,我们来打印下,看看是否执行的是leizi的用例。

import  unittest
class testone(unittest.TestCase):
def setUp(self) -> None:pass
def tearDown(self) -> None:pass def leizi1(self):
  print("leizitest")

  self.assertTrue(True)

def leizi2(self):

  print("leizitest")

  self.assertTrue(True)
def testone(self):
  self.assertTrue(True)
if __name__=="__main__":
   unittest.main()

结果:

打印的结果与预期完全一致。那么雷子是怎么做到的,我先来给你解析一下。首先我们使用的unittest.main()加载运行的测试用例,我们可以去找这个main方法,在源码中可以发现

我们可以看到有这个TestProgram这个里面的,有这么一个函数,那么我们对应的去看看这个里面的方法  。

默认加载的是defaultTestLoader,那么我去看看这里面有没有我们想要的。

这里我们可以看到 是一个类,这里有个定义的 test,我们看看。接下来是怎么用的。

我们可以搜索下,在这个类里面下面有一个获取测试用例名称的,这个地方判断了 测试用例名称调用了这个值,我们可以改下试试,testMethodPrefix的值改成leizi试试。还是上面的测试函数。

import  unittestclass testone(unittest.TestCase):   
   def leizi1(self):

    print("leizitest")

    self.assertTrue(True)

  def leizi2(self):

    print("leizitest")

    self.assertTrue(True)

  def testone(self):

     self.assertTrue(True)
if __name__=="__main__":
  unittest.main()

结果:

只执行了leizi开头的,我们修改成功了。

回到上面这个面试题。我们在面试的时候都会遇到这种情况,其实这个时候我们如果没有做过或者看过源码,可以回答,在我目前的得到的知识中,就是以test开头的,但是要是定制,我要看下源码,是否可以定制。如果你看过源码,那就直接说 我知道在哪个文件下面的 什么值可以直接修改。

面试不难,面试题也不难。

学会解答,能给出方案来。

唯有变化,应对万变题目。

题目唯一,方案千变万化。

合理思路,方案有理有据。

基于需求,给定方案即可。

关注雷子说测试,每天带你分享不一样的东西。

如果你感觉有用,可以收藏,分享给大家。帮助大家一起成长。

有问题也可以和我交流。qq&微信:952943386

unittest加载测试用例名称必须以test开头,是否可以定制化的更多相关文章

  1. Python 中 unittest 框架加载测试用例的常用方法

    unittest 当中为我们提供了许多加载用例的方法,这里说下常用的两种方法...推荐使用第二种 第一种加载测试用例的方法:使用加载器加载两个模块 需要把所有的模块加载到套件中 那么就可以自动的运行所 ...

  2. unittest加载用例

    diascover加载测试用例 1.discover方法里面有三个参数: -case_dir:这个是待执行用例的目录. -pattern:这个是匹配脚本名称的规则,test*.py意思是匹配test开 ...

  3. Unittest加载执行用例的方法总结

    前言 说到测试框架,unittest是我最先接触的自动化测试框架之一了, 而且也是用的时间最长的, unittest框架有很多方法加载用例,让我们针对不同的项目,不同项目的大小及用例的多少自己选择加载 ...

  4. LoaderTest加载测试用例的方法总结

    加载用例,可以用suite.addTest(测试类名("测试函数名"))实现,也可用过suit.addTest(loader.Loader....)实现,一下针对Loader的三个 ...

  5. Player启动时提示 "System.InvalidOperationException:无法加载计数器名称数据

    问题 播放器意外断电重启后可能导致Player启动时报错,提示如下: 原因 这个提示一般指 Universal Player 找不到或无法设置一个Windows Performance Monitor ...

  6. 如何让aspnet服务加载静态资源html(我的动态网页静态化) 转

    我们知道,IIS自身是不能处理像ASPX扩展名这样的页面,只能直接请求像HTML这样的静态文件. 当客户端请求一个服务器资源时,这个HTTP请求会被inetinfo.exe进程截获(www服务),然后 ...

  7. 服务器程序动态加载自定义jar包的过程

    需求: 用过hive的都知道,可以自定义hive的一个udf jar,然后将这个jar add到hive服务端,就会加载这个jar实现用户自定义逻辑.现在的需求就是实现这么一个服务端所做的事情! 场景 ...

  8. 关于unittest单元测试框架中常用的几种用例加载方法

    unittest模块是Python自带的一个单元测试模块,我们可以用来做单元测试.unittest模块包含了如下几个子模块: 测试用例:TestCase 测试集:TestSuite 加载用例:Test ...

  9. 第四篇 Integration Services:增量加载-Updating Rows

    本篇文章是Integration Services系列的第四篇,详细内容请参考原文. 回顾增量加载记住,在SSIS增量加载有三个使用案例:1.New rows-add rows to the dest ...

随机推荐

  1. MyBatis拦截器自定义分页插件实现

    MyBaits是一个开源的优秀的持久层框架,SQL语句与代码分离,面向配置的编程,良好支持复杂数据映射,动态SQL;MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyB ...

  2. 最长上升子序列 LIS nlogn

    给出一个 1 ∼ n (n ≤ 10^5) 的排列 P 求其最长上升子序列长度 Input 第一行一个正整数n,表示序列中整数个数: 第二行是空格隔开的n个整数组成的序列. Output 最长上升子序 ...

  3. 解决:Specifying a namespace in include() without providing an app_name和XXX is not a registered namespace问题

    python3 Django 环境下,如果你遇到namespace没有注册以及在根目录下urls.py中的include方法的第二个参数namespace添加之后就出错的问题. 出错问题: 'Spec ...

  4. Spring Boot2 系列教程(十二)@ControllerAdvice 的三种使用场景

    严格来说,本文并不算是 Spring Boot 中的知识点,但是很多学过 SpringMVC 的小伙伴,对于 @ControllerAdvice 却并不熟悉,Spring Boot 和 SpringM ...

  5. Detours 劫持

    在使用 Detours 劫持之前必须得拥有这两个东西:detours.h 和 detours.lib. 为了这两个东西我真的是弄了大半天,本着自己动手丰衣足食的思想: 我去 GitHub 克隆了一份来 ...

  6. API 网关的选型和持续集成

    2019 年 8 月 31 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·成都站,APISIX 作者温铭在活动上做了< API 网关的选 ...

  7. bcache 状态/配置 文件详细介绍(翻译自官网)

    声明: 文中 斜体带下划线  的段落为翻译不够准确的段落 原文:https://www.kernel.org/doc/Documentation/bcache.txt 官网:https://bcach ...

  8. 常用函数-Win-IP

    //************************************************************************* // 函数名: GetAppPath // 返回 ...

  9. boost::multi_index 多索引容器

    #include "stdafx.h" #include <string> #include <boost/multi_index_container.hpp&g ...

  10. 【python数据分析实战】电影票房数据分析(一)数据采集

    目录 1.获取url 2.开始采集 3.存入mysql 本文是爬虫及可视化的练习项目,目标是爬取猫眼票房的全部数据并做可视化分析. 1.获取url 我们先打开猫眼票房http://piaofang.m ...