首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在python类方法中进行测试

在python类方法中进行测试
EN

Stack Overflow用户
提问于 2016-08-27 06:42:02
回答 2查看 1.3K关注 0票数 0

我正在使用python中的unittest来测试一个项目。该项目定义了供其他python开发人员进行子类化的类。然后,可以运行该项目并利用用户编写的子类。

我想要测试子类的方法是否被项目传递了正确的数据。我该怎么做呢?从测试类中调用unittest.TestCase.assert*方法并不简单,测试类是项目的子类化。

我曾尝试将TestCase对象设置为全局变量,并从子类方法中调用TestCase对象的assert方法,但全局变量似乎不是从测试类方法的作用域中定义的。

示例

代码语言:javascript
运行
AI代码解释
复制
import unittest
import myproject


class TestProjectClass(unittest.TestCase):
    def test_within_class_method(self):
        myproject.run(config_file_pointing_to_ProjectClass)     # Calls SomeUsersClass.project_method()


class SomeUsersClass(myproject.UserClassTemplate):
    def project_method(self, data_passed_by_project):
        #want to test data_passed_by_project in here
        pass
EN

回答 2

Stack Overflow用户

发布于 2016-08-28 20:58:18

通过使用raise将自定义异常向上传递到unittest.TestCase,我能够使其正常工作。自定义异常可以与需要测试的任何数据打包在一起。我没有在这里展示它,但是test_helper.py只是Exception的一个基本子类。

代码语言:javascript
运行
AI代码解释
复制
import unittest
import myproject
from test_helper import PassItUpForTesting


class TestProjectClass(unittest.TestCase):
    def test_within_class_method(self):
        try:
            # The following line calls SomeUsersClass.project_method()
            myproject.run(config_file_pointing_to_ProjectClass)
        except PassItUpForTesting as e:
            # Test things using e.args[0] here
            # Example test
            self.assertEqual(e.args[0].some_attribute_of_the_data,
                             e.args[0].some_other_attribute_of_the_data)


class SomeUsersClass(myproject.UserClassTemplate):
    def project_method(self, data_passed_by_project):
        #want to test data_passed_by_project in here
        raise PassItUpForTesting(data_passed_by_project)

(由于某些原因,在同一文件中定义自定义异常不起作用,因为在用户的类中创建的异常的实例没有被标识为自定义异常的实例。通过sys.exc_*检查异常,发现异常类型是不同的。因此,我将异常放在另一个模块中,导入它,它就起作用了。)

票数 0
EN

Stack Overflow用户

发布于 2016-08-27 06:47:03

您可以在docstring中尝试unittest。

看看这个:

http://docs.python-guide.org/en/latest/writing/tests/#doctest

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39178265

复制
相关文章
OpenAI老板推特说相声:嘲笑创投圈「募6轮资还没到A轮」
创业公司募资化缘一轮接一轮、同时迟迟不出货没进展的恶劣风气,现在已是妇孺皆知。虽然初创公司过去一般在筹集 A、B、C 等轮次之前先进行种子轮融资,但现在许多公司选择在其间进行额外的轮次。
新智元
2022/02/24
4480
OpenAI老板推特说相声:嘲笑创投圈「募6轮资还没到A轮」
MeshCloud 脉时云获 1 亿元 A+ 轮融资
2021年11月23日,出海融合云服务商MeshCloud脉时云(www.mesh.com.cn)宣布完成1亿元A+轮融资。 MeshCloud脉时云公司名为北京云联万维技术有限公司,成立于2017年,基于MeshCloud融合云SaaS平台、出海音视频/游戏/电商等行业垂直解决方案、高效的服务体系、海外公有云厂商的深度合作,以及自建海外云基础设施为中企出海提供高质量、低成本、敏捷部署的一站式产品和服务。 此轮融资由贵州省创新赋能大数据投资基金领投,老股东跟投。募集资金将投入到云架构师及产品研发团队扩充和
云头条
2022/03/18
4300
嘲笑资本退潮后的共享单车,或在嘲笑资本大潮下我们
ofo一出错,人们就发笑。或许是厌倦了共享单车造成的城市管理乱象,或许是出于对这个声称共享经济的厌倦,ofo只要出现一点负面消息便会引发人们的口诛笔伐。这正是当下的共享单车市场尴尬的地方,一旦资本输血停止,公司便会出现问题,用户便会纷纷倒戈。世态炎凉,或许只有真正参与其中的人们才会知道。回想共享单车大战刚刚兴起的时候,那种尔要战便战的豪气依然历历在目,对于共享单车也没有今天这么多的质疑声音。
孟永辉
2018/12/19
4120
嘲笑资本退潮后的共享单车,或在嘲笑资本大潮下我们
Hive补充之窗口函数
窗口函数 1、hive窗口函数语法 hive中的窗口函数over() ,over()窗口函数的语法结构
Maynor
2021/04/09
1.1K0
非公医院的“心病”与冠脉 AI 的“良药”
“医生提供的服务跟其他的服务业完全不一样,我们面对的是一个个鲜活的生命。如果我把一位患者治好了,挽回的不仅仅是一条生命,更可能是整个家庭的希望。”
AI掘金志
2019/09/26
4690
非公医院的“心病”与冠脉 AI 的“良药”
SQL之窗口函数
窗口函数,也叫OLAP函数(Online Anallytical Processing,联机分析处理),可以对数据库数据进行实时分析处理。 绝大多数情况,sql语句处理数据是行为基本单位,一行一行的对数据操作。窗口函数则是可以对行数据进行分组,将多行数据分成一组,然后进行组间操作或者组内操作。
cultureSun
2023/05/18
3850
SQL之窗口函数
WinForm之窗体应用程序
WinForm之窗体应用程序 基本简单数据库操作(增删改查) 1 using System; 2 using System.Collections.Generic; 3 using System.Windows.Forms; 4 5 namespace DataBaseOperation 6 { 7 static class Program 8 { 9 /// <summary> 10 /// 应用程序的主入口点。 11 /
用户1112962
2018/07/04
1.3K0
tkinter学习系列(二)之窗口的设置
目录 (一)窗体的最小框架 1.说明: 2.源代码: 3.实现效果: (二)窗体的基本设置 1.说明: 2.完整代码: 3.实现效果: (三)窗体的外形设置 1.说明: 2.完整代码: 3.实现效果: (四)窗体的三个方法: 1.获取屏幕的大小 2.获取窗体的大小 3.获取窗体的位置 目录: 1.窗体的最小框架 2.窗体的基本设置 3.窗体的外形设置 (一)窗体的最小框架 1.说明: 需要导入标准库: import tkinter 2.源代码: # 导入模块,并取别名 impor
py3study
2020/01/17
1.1K0
MFC学习之窗口基础
                          WinMain函数  1、句柄(HANDLE):{ 1. 定义:资源的标识 2. 句柄的作用: 操作系统通过句柄来找到对应的资源,从而对这些资源进行管理和操作。 3句柄的分类:(按资源){ 1.图标句柄(HICON) , 2.光标句柄(HCURSOR) ,             3. 窗口句柄(HWND) ,            4.应用程序实列句柄(HINSTANCE). } } 2、Windows应用程序,操作系统,计算机硬件之间的相互关系
Gxjun
2018/03/22
7380
MFC学习之窗口基础
快来,看看spring有多烂-来自jfinaL的嘲笑
脱离任何使用场景的比较,都是傻x行为。但我还是要当一回傻x,就当给新版本jfinal献礼了。
xjjdog
2019/07/10
1.6K1
快来,看看spring有多烂-来自jfinaL的嘲笑
BOM核心——window对象之窗口
浏览器对象模型BOM(Browser,Object,Model)是以window对象为基础的,这个对象代表了浏览器窗口,页面可视区域,它还被复用为Es的全局对象Global,所有的原生类型的构造函数和函数都从一开始就存在于这个对象之上。
大熊G
2022/11/14
9090
企业安全管理的“六脉神剑”
点击标题下「大数据文摘」可快捷关注 当考虑确定计算系统、数据和网络的可用性和完整性控制时,与可考虑潜在机会授权的管理员相比,普通用户拥有更少的特权。系统管理员、执行备份的操作人员、数据库管理员、维修技师甚至帮助台支持人员的运营商,都纷纷在网络中提升权限。为了确保你系统的安全性,还必须考虑可以防止管理员滥用特权的控制。用于管理日常事务以及组织内的数据访问的自动化控制不能保证自己的完整性和可用性,避免过度管理任务的控制。如果控制管理使用权限的控件也不强,那么任何其他的控件也会被削弱。下面一起来看企业安全管理的“
大数据文摘
2018/05/23
8020
5 脉神剑,杀无赦!
分享一个数据,我在 CSDN 上有 19 万多的读者关注了,这个数量应该能排到所有博主里面的 TOP 3(乐观点,自信点),就算是保守估计的话,至少应该是 TOP 10 吧!
沉默王二
2021/04/25
4190
5 脉神剑,杀无赦!
多级时间轮定时器_时间轮与哈希表定时
顾名思义,时间轮就像一个轮子,在转动的时候外界会指向轮子不同的区域,该区域就可以被使用。因此只要将不同时间的定时器按照一定的方法散列到时间轮的不同槽(即时间轮划分的区域)之中,就可以实现在运转到某个槽时,进行判断该定时器是否已经到达运行时间(需要判断是由于有的定时器并非在这一圈就需要运行,可能需要后面几圈才会运行。
全栈程序员站长
2022/11/10
1.2K0
多级时间轮定时器_时间轮与哈希表定时
Lucene 高阶查询的六脉神剑 —— QueryParser
上篇我们介绍了 Lucene 多样的查询模式,每一种都是相互独立的用来解决特定查询目标的 Query 对象。本节我们要将这些查询模式使用 QueryParser 组合起来进行合并查询 —— 用一个文本字符串表达式来表示所有的查询模式。
老钱
2019/09/17
2.6K1
Lucene 高阶查询的六脉神剑 —— QueryParser
flink时间系统系列之窗口函数中的应用分析
在flink中窗口划分可以基于时间、基于数量,我们这里所涉及到的窗口是针对时间类型窗口:processing-time window与event-time window,时间系统在时间窗口应用主要用来注册窗口触发时间点,来决定窗口什么时候开始执行窗口函数。接下来从源码的角度分析窗口是如何使用时间系统的。
Flink实战剖析
2022/04/18
6810
flink时间系统系列之窗口函数中的应用分析
秘籍:微服务设计的六脉神剑
介绍 “微服务”是一种新的软件开发模式,它来源于提高软件开发和管理效率的一系列工程实践。敏捷方法、DevOps文化、PaaS、应用容器、CI/CD文化和技术的广泛采用,使得构建真正的模块化、大规模服务系统成为可能。 什么是微服务? 微服务是一种架构方法,强调将应用拆分成由跨职能团队管理的单目标、松散耦合的多个服务,以满足如今数字时代对软件系统交付和维护速率与质量的要求。 微服务与编程语言、平台、操作系统无关。它将庞大的应用拆分成更小更简单的应用,这些庞大的应用一般都是打成一个软件包。每个应用只需要做好一件
DevOps时代
2018/02/02
8710
秘籍:微服务设计的六脉神剑
打通Python学习的任督二脉
Python的基础知识已经在上周全部更新完成,今天对之前的文章做一个汇总方便大家的查看【多图!加了好多思维导图】同时对有遗漏的知识点也已经做了补充,当然这一部分直接将自己的学习笔记给贴上了,文末加了四篇实战练习和一篇BAT面试题分享。今天更新的次条对LeetCode的1--20题做了汇总,发起了大家一起刷题的活动,后续刷题将不按顺序而是按照具体的知识点。
PM小王
2019/07/02
6850
打通Python学习的任督二脉
【干货】教你打通Git的任督二脉
分布式版本控制系统( Distributed Version Control System,简称 DVCS )。
狼王编程
2021/06/01
4310
【干货】教你打通Git的任督二脉
点击加载更多

相似问题

反应钩形与脉轮

14

如何转换/动画与脉轮-UI?

23

脉轮UI图标

144

脉轮UI,如何使组件与左边对齐?

37

脉轮用户界面图标作为变量

15
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档