Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python单元测试去了哪里?

Python单元测试去了哪里?

提问于 2017-12-22 03:38:18
回答 2关注 0查看 534

我正在编写一个库或一个应用程序,单元测试文件在哪里?

将测试文件与主应用程序代码分开是很好的做法,但将它们放到应用程序根目录内的“tests”子目录中会很麻烦,因为这会导致将要测试的模块更难导入。

还有其他好的做法吗?

回答 2

嗨喽你好

发布于 2017-12-22 03:56:00

只有1个测试文件

如果没有很多的测试文件,把它放在顶层目录是好的(我认为这是pythonic(推荐)):

代码语言:txt
AI代码解释
复制
module/
代码语言:txt
AI代码解释
复制
  lib/
代码语言:txt
AI代码解释
复制
    __init__.py
代码语言:txt
AI代码解释
复制
    module.py
代码语言:txt
AI代码解释
复制
  test.py

许多测试文件

如果有很多测试文件,把它放在一个tests文件夹中:

代码语言:txt
AI代码解释
复制
module/
代码语言:txt
AI代码解释
复制
  lib/
代码语言:txt
AI代码解释
复制
    __init__.py
代码语言:txt
AI代码解释
复制
    module.py
代码语言:txt
AI代码解释
复制
  tests/
代码语言:txt
AI代码解释
复制
    test_module.py
代码语言:txt
AI代码解释
复制
    test_module2.py

但是如果你把测试放在tests文件夹中,测试不能import ..lib在CLI中,因为__main__ 不能导入相关的模块,所以我们可以使用nose,或者我们可以添加一个父目录到Python导入路径,为此我将创建一个

代码语言:txt
AI代码解释
复制
env.py
代码语言:txt
AI代码解释
复制
import sys
代码语言:txt
AI代码解释
复制
import os
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
# append module root directory to sys.path
代码语言:txt
AI代码解释
复制
sys.path.append(
代码语言:txt
AI代码解释
复制
    os.path.dirname(
代码语言:txt
AI代码解释
复制
        os.path.dirname(
代码语言:txt
AI代码解释
复制
            os.path.abspath(__file__)
代码语言:txt
AI代码解释
复制
        )
代码语言:txt
AI代码解释
复制
    )
代码语言:txt
AI代码解释
复制
)

代码语言:txt
AI代码解释
复制
module/
代码语言:txt
AI代码解释
复制
  tests/
代码语言:txt
AI代码解释
复制
    test_module.py
代码语言:txt
AI代码解释
复制
    env.py

并import env在测试导入模块之前

代码语言:txt
AI代码解释
复制
test_module.py
代码语言:txt
AI代码解释
复制
import unittest
代码语言:txt
AI代码解释
复制
# append parent directory to import path
代码语言:txt
AI代码解释
复制
import env
代码语言:txt
AI代码解释
复制
# now we can import the lib module
代码语言:txt
AI代码解释
复制
from lib import module
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
if __name__ == '__main__':
代码语言:txt
AI代码解释
复制
    unittest.main()

心愿

发布于 2017-12-22 03:55:25

对于一个文件module.py,通常应该test_module.py按照Pythonic的命名约定来调用单元测试。

有几个普遍接受的地方可以说test_module.py:

  1. 和module.py。在同一个目录下。
  2. 在../tests/test_module.py(与代码目录相同的级别)。
  3. 在tests/test_module.py(代码目录下的一个级别)。

我更喜欢#1,因为它简单的找到测试并导入它们。无论您使用的是哪种构建系统,都可以轻松配置为运行以test_。开始的文件。实际上,用于测试发现的默认unittest模式是test*.py。

和开发者交流更多问题细节吧,去 写回答
相关文章
Python加载的文件哪里去了?(2)
其实这个标题并不确切,其实应该是ImmDbg调试器加载的文件哪里去了。加载文件脚本还是下面的样子:
obaby
2023/02/24
4870
Science: 火星上的水去了哪里?
2021年5月15日7时18分,天问一号探测器成功着陆于火星乌托邦平原南部预选着陆区,我国首次火星探测任务着陆火星取得成功!事实上,火星作为类地行星和太阳系八大行星之一,早已被人类所关注,其中一个重要原因便是火星上有水(Clifford et al., 1987; Di Achille and Hynek, 2013; Orosei et al., 2018 )。
bugsuse
2022/09/23
3860
Science: 火星上的水去了哪里?
Linux Used内存到底哪里去了?
这个问题不止一个同学遇到过了,之前小王同学也遇到这个问题,内存的计算总是一个迷糊账。我们今天来把它算个清楚下!
民工哥
2020/09/15
3.5K0
Linux Used内存到底哪里去了?
Eclipse中JSP生成的class文件去了哪里?
大家都知道,JSP在请求的时候,会先转化成Servlet(其实就是个java类),然后生成class文件,再提供服务。 那么生成的java、class文件在哪呢?Eclipse中根本找不到呀!   首先应该了解的是Tomcat在Eclipse的映射关系,参考前一篇博文所述:Tomcat的服务器目录配置   可以了解到,Tomcat在Eclipse中提供了三种位置配置选项:   1 Use workspace metadata   2 Use Tomcat installation   3 Use c
用户1154259
2018/01/17
1.9K0
Eclipse中JSP生成的class文件去了哪里?
黑洞信息悖论:进入黑洞的信息去了哪里
大数据文摘作品,转载具体要求见文末 编译团队 | 小浪 邱猛 杨捷 作者 | Sabine Hossenfelder 黑洞可以吞噬宇宙万物,但若想再次获取信息仍然不易。图片来源:ESO, ESA/Hubble, M. Kornmesser. 据谷歌数据指出,史蒂芬霍金是当今在世最著名的物理学家,如果你对物理有所了解,那么你应该知道他最著名的理论就是黑洞信息悖论。在霍金之前,黑洞并不是自相矛盾的,如果你扔一本书到黑洞,你将再无法阅读到这本书。这是因为外界无法触及从黑洞视界(event horizon)穿过
大数据文摘
2018/05/25
8250
这只电子狗跑哪里去了,快找
最新新换了批电脑,所有的开发软件都要重装,其中在IAR安装完,license激活后,打开软件时总是提示找不到dongle,导致项目无法编译,我用的是8.20版本,还是比较新的一个版本,但是就是找不到dongle,经过尝试,解决办法有两种,第一种将win10下IAR的属性设置为兼容win8,如下图所示,
用户1605515
2018/07/25
4820
这只电子狗跑哪里去了,快找
那些因为年纪大被辞退的程序员最后都去了哪里?
坦白来讲编码工作也有十几年了,因为年龄大而被辞退的程序员没有真正实际见过,倒是听过华为辞退过34岁以上的,也经过几家公司年龄大的基本上都是自己主动转型了或者为了孩子回老家的多一些,技术这门职业很多公司会忽略经验这个概念,软件这个行业也不例外,俗话讲家有一老如有一宝,有个有经验的老技术人员镇场子,很多公司都有老家伙镇场子,平时老家伙不一定露面,真要到了项目交付的关键时期,或者临时客户提出什么变态的需求,但时间又比较紧迫这些老家伙们就该上场了,之前经过一个公司,客户提的条件非常苛刻,需要对嵌入式内核进行深层定制,时间卡的还是非常紧迫,这种情况只能老将出马了,用了三天的时间搞定,老技术员平时不见得多有用,关键时候真能起作用。
程序员互动联盟
2018/09/29
2.6K0
那些因为年纪大被辞退的程序员最后都去了哪里?
大数据处理PK,美国不知道高明到哪里去了
“大数据”(Big data),实际上意译作“高频复杂数据”更贴切一些,也更便于非从业者直观了解这个词的含义。 由于“大数据”的大并非指单纯的数据量庞大,即便是 1DB 大的数据库,如果仅仅是一张简单的二维表,里面填满唯一主键构成的简单数据,也没什么难以处理的,只要硬件设备能跟上,基本上中学生学过 C 也就足以处理这份数据了。并不需要整个社会这么大张旗鼓的研究和鼓吹。 IBM 定义“大数据”有 4 个 V 的标准(量级 Volume,多样性 Variety,价值 Value,速度Velocity),这点
小莹莹
2018/04/19
9370
大数据处理PK,美国不知道高明到哪里去了
(十六)c#Winform自定义控件-文本框哪里去了?
GitHub:https://github.com/kwwwvagaa/NetWinformControl
冰封一夏
2019/09/11
5540
原创|X侦探所事件簿|内存到哪里去了
提示:公众号展示代码会自动折行,建议横屏阅读 「第一部分 前言」 我们都知道,程序的运行离不开内存。很多人都有这种直接朴素的想法,内存越大程序的运行速度越快。对于数据库来说,如果数据都能加载到内存中,不需要从磁盘读取,那速度肯定是杠杠的。但是,对于现在的应用来说,几十GB乃至TB级别的数据,都是常见的情况,但内存多是十几GB。所以,内存就是就是珍贵的资源,要精打细算的使用,那么这次我们就探究一下和内存相关的知识。这些知识将从两个方面着手,一是操作系统方面,从该方面我们讲述内存在这个层面是怎么分布的;二是M
腾讯数据库技术
2022/03/30
6210
用Python帮你上马,哪里无码打哪里
所谓的像素图,就是对图像做一个颗粒化的效果,使其产生一种妙不可言的朦胧感。费话不多说,先来看一张效果图。
诸葛青云
2019/06/21
6340
用Python帮你上马,哪里无码打哪里
Python单元测试()
在Python的单元测试(一)中,我们讲了单元测试的概念以及一个简单的单元测试例子。
青南
2019/01/09
1.1K0
Python单元测试
#单元测试 import unittest def get_formatted_name(first,laster): a = first + " " + laster return a class NamesTestCase(unittest.TestCase): #继承测试类 '''测试name_function.py''' def setUp(self): '''这里填写公用的调用类,后面直接进行测试即可''' def test_first_last_name(self): #tes
陈不成i
2021/06/21
6290
Python单元测试
什么是单元测试, 维基百科上是这么定义的: unit testing is a method by which individual units of source code, sets of one or more computer program modules together with associated control data, usage procedures, and operating procedures, are tested to determine if they are fit for use.[1] Intuitively, one can view a unit as the smallest testable part of an application. 简而言之,就是验证系统中最小可测试单元的功能是否正确的自动化测试。因此,单元测试的目地就是“对被测试对象的职责进行验证”, 在写单元测试之前,先识别出被测试对象的职责,就知道该怎么写这个单元测试了。
职场亮哥
2020/10/10
5730
Python单元测试
大数据告诉你,离开北上广的互联网工程师都去了哪里?
作为国内一线的大城市北上广深,每年都有数不清的IT青年们来追梦,但像这样的大城市也有让有志青年们望而却步的一面,比如房价、物价、又或者是每天早上一眼望不到头的地铁队伍。
钱塘数据
2018/09/21
4990
大数据告诉你,离开北上广的互联网工程师都去了哪里?
Python 单元测试(unittest
项目的整体结构可以参考“软件目录开发规范”,这里单说测试目录。一般都是在项目里单独创建一个测试目录,目录名就是“tests”。 关于目录的位置,一种建议是,在项目名(假设项目名是Foo)的一级子目录下创建二级子目录 “Foo/foo/tests” 。但是这样可能是因为用起来不方便,有很多是按下面的做法。不过下面的示例我还是用这个方法来创建测试目录。 还可以把测试目录向上移一层,作为一级子目录,直接创建在项目之下 “Foo/tests”。参考django、scrapy、flask都是这样的做法。
py3study
2020/01/03
8500
Python 单元测试详解
作者:yukkizhang,腾讯 CSIG 测试工程师 本文直接从常用的 Python 单元测试框架出发,分别对几种框架进行了简单的介绍和小结,然后介绍了 Mock 的框架,以及测试报告生成方式,并以具体代码示例进行说明,最后列举了一些常见问题。 一、常用 Python 单测框架 若你不想安装或不允许第三方库,那么 unittest 是最好也是唯一的选择。反之,pytest 无疑是最佳选择,众多 Python 开源项目(如大名鼎鼎的 requests)都是使用 pytest 作为单元测试框架。甚至
腾讯技术工程官方号
2021/04/15
2.7K0
python单元测试简介
您可能知道测试很好,但是在尝试为客户端代码编写单元测试时要克服的第一个障碍是缺少任何实际的单元。JavaScript代码是为网站的每个页面或应用程序的每个模块编写的,并与后端逻辑和相关的HTML紧密混合。在最坏的情况下,代码会与HTML完全混合在一起,作为内联事件处理程序。
用户7466307
2020/06/17
2.1K0
python 单元测试 -- unittest
单元测试是对程序中的单个子程序、函数、过程进行的测试,面向白盒测试。 单元测试测试覆盖常用子程序的输入组合,边界条件和异常处理,尽可能保证单元测试代码简洁,避免单测本身代码有 bug 影响对测试对象的测试结果。
orientlu
2018/09/13
1.3K0
python单元测试unittest
http://blog.csdn.net/five3/article/details/7104466
bear_fish
2018/09/20
7400

相似问题

文件压缩问题,文件去了哪里?

0183

我注册的域名 哪里去了?

1282

我想知道我的腾讯云背景布寄哪里去了?

3475

目录跑哪去了?

1285

C# SDK哪去了 ?

2388
相关问答用户
腾讯云TDP | 先锋会员擅长2个领域
某公司 | 程序员擅长1个领域
擅长2个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档