【原】linux系统中,执行nosetests无法遍历以“test”开头的目录或文件的问题

最近在centos下面安装使用了nose,发现了一个问题:在命令行中执行nosetests无法遍历该目录下面以“test”开头的目录或者文件并执行文件中的测试。

1 # nosetests -v
2
3 ----------------------------------------------------------------------
4 Ran 0 tests in 0.000s
5
6 OK

而在windows下面是可以的:

1 nosetests -v
2 here ... ok
3 test1.test4 ... ok
4
5 ----------------------------------------------------------------------
6 Ran 2 tests in 0.003s
7
8 OK

 1 #我执行nosetests -v命令的目录下面文件结构
 2 #--test.py
 3 #--test/
 4 #         test1.py
 5
 6 #test.py
 7 def test():
 8     ‘‘‘here ‘‘‘
 9     print ‘ok‘
10
11 #test1.py
12 def test():
13     print ‘ok‘

我执行nosetests -v命令的目录下面文件结构

在网上查找了好久,也没找到这是为什么以及怎么解决这个问题,最后,一个前辈让我回归到nose本身的参数去找,执行nosetests -h发现了如下的两个参数:

1 --exe                 Look for tests in python modules that are executable.
2                         Normal behavior is to exclude executable modules,
3                         since they may not be import-safe [NOSE_INCLUDE_EXE]
4 --noexe               DO NOT look for tests in python modules that are
5                         executable.(The default on the windows platform is to
6                         do so.)

--exe后面的注释大致就是说:使用这个参数的话,nose会去python模块中寻找可执行的测试用例,一般情况下是去把那些可执行的模块包含进来,尽管它们或许不能被安全地导入……而--noexe后面的注释正好与前面的相反,尤其是其中的“windows platform”让我觉得,这两个参数可能就是解决问题的关键,于是执行了下面的命令:

1 [[email protected] test]# nosetests -v --exe
2 here ... ok
3 test.test4 ... ok
4
5 ----------------------------------------------------------------------
6 Ran 2 tests in 0.003s
7
8 OK

果然就行了,心中大喜!至于为什么nose要这样设计,我想是:nose认为导入那些默认可以执行的文件可能会对系统照成破坏吧。

因为现在我的目录下各个文件的权限是这样的:

1 [[email protected] test]# ll
2 总用量 12
3 drwxr-xr-x 2 root root 4096 12月 31 23:16 test1
4 -rwxr--r-- 1 root root   88 1月   6 04:15 test.py
5 -rw-r--r-- 1 root root  264 1月   6 04:15 test.pyc

可以看出test.py是有执行权限的,通过chmod -x test.py将执行权限去掉后可以正常执行了

 1 [[email protected] test]# nosetests -v
 2
 3 ----------------------------------------------------------------------
 4 Ran 0 tests in 0.000s                  #没有测试被运行
 5
 6 OK
 7 [[email protected] test]# chmod -x test.py  #去掉test.py的执行权限
 8 [[email protected] test]# nosetests -v
 9 here ... ok
10
11 ----------------------------------------------------------------------
12 Ran 1 test in 0.001s                     #此时只运行了test.py并没有运行test1.py因为前面只去掉了test.py的执行权限
13
14 OK
15 [[email protected] test]# ll
16 总用量 12
17 drwxr-xr-x 2 root root 4096 12月 31 23:16 test1
18 -rw-r--r-- 1 root root   88 1月   6 04:15 test.py
19 -rw-r--r-- 1 root root  264 1月   6 04:15 test.pyc

所以在linux下面有两种方式可以使nose遍历test目录:

1、使用--exe参数,如nosetests -v --exe;

2、对于所有的test目录和文件执行chmod -x。

时间: 2024-08-04 20:56:25

【原】linux系统中,执行nosetests无法遍历以“test”开头的目录或文件的问题的相关文章

Linux系统中while管道的

因为项目从AIX系统迁移到了RedHat系统,之前写过的一段Shell脚本不能成功运行,经过分析,锁定了关键代码如下: readFileContent(){ currentFile=$1 fileShowRows=0 fileRealRows=0 fileBusinessDate=$2 fileCountStartTime=0 fileCountEndTime=0 echo $1 echo $2 cat $1 | while read line do if [ "$fileRealRows&qu

学习Linux系统中命令的简单方法

如果说如何快速学习.了解Linux的话,我的答案是学命令.背命令!为何呢?对于一名新手来说,去学习Linux的思想.了解Linux的架构.明白Linux中"一切皆文件"概念虽然说是没有错,是对的.但是个人认为去学习这些"高大上"的东西不是一时半会的事儿,它需要一定的时间和经验去沉淀才能掌握.那么如何最快速了解Linux并使用呢?我依然觉得学命令.背命令,掌握命令是比较笨但却是比较快的方式. 我开始学习Linux的时候,问了前辈:我入门Linux需要掌握哪些命令呢?前

linux系统中文件的特殊权限

在上篇博客中叙述linux系统中文件的基本属性,见http://vinsent.blog.51cto.com/13116656/1951574,这篇给大家带来linux系统文件的特殊权限,包括SUID.SGID.Sticky(粘滞位). 一.安全上下文 安全上下文指的是一类定义某个进程允许做什么的许可和权限的集合.安全上下文的概念范围很广范,权限.特权.访问令牌.完整性等级等等都包含在其中.这里只简要说说linux系统对文件的安全控制: (1)进程有属主和属组,文件有属主和属组      (2)

在linux系统中,如何使用【find】命令精确查找文件?

[find]是文件查找工具,它会遍历指定目录下所有文件的,所以使用该命令,查找文件的速度比较慢.但是它能够文件类根据型.文件的各做为条查件,找显示符合条件的文件目录. 一.既然,[find]是根据文件的特点来查看文种属性件的.那么先了解,文件有啥特点. 1.文件特点有很多,它们是分类的.find 命令如何表示文件特点的类别的: [find]命令是如何标识文件特点的类别的:              文件名称                   -name              文件类型   

linux系统中的文件管理

Linux系统中文件管理 一.文件系统与目录结构 1.1文件系统概念 文件系统是操作系统最重要的一部分,它定义了磁盘上储存文件的方法及数据结构.文件系统是操作系统组织.存取和保存信息的重要手段,每种操作系统都有自己的文件系统,如Windows所用的文件系统主要有FAT16.FAT32和NTFS,Linux所用的文件系统主要有ext2.ext3.ext4.xfs和btrfs等. 1.2Linux文件系统的特点 文件和目录被组织成一个单根倒置树结构 文件系统从根目录下开始,用"/"表示根文

获得Unix/Linux系统中的IP、MAC地址等信息

获得Unix/Linux系统中的IP.MAC地址等信息 中高级  |  2010-07-13 16:03  |  分类:①C语言. Unix/Linux. 网络编程 ②手册  |  4,471 次阅读 作者:diaoyf  |  文章来源:http://programmerdigest.cn 实际环境和特殊需求往往会将简单问题复杂化,比如计算机IP地址,对于一个连接中socket,可以直接获得本端和对端的IP.端口信息.但在一些特殊场合我们可能需要更多的信息,比如系统中有几块网卡,他们的Mac地

关于Linux系统中sed编辑器详细讲解

一.sed简介 sed是非交互式的编辑器.它默认不不编辑源文件,仅仅对模式空间中的数据做处理,并将模式空间中的内容显示在屏幕上.sed编辑器是逐行处理文件,并将结果发送到屏幕.具体过程如下: 首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上.sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示.处理完输入文件的最后一行后,sed便结束运行.sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修

LINUX系统中动态链接库的创建与使用{补充}

大家都知道,在WINDOWS系统中有很多的动态链接库(以.DLL为后缀的文件,DLL即Dynamic Link Library).这种动态链接库,和静态函数库不同,它里面的函数并不是执行程序本身的一部分,而是根据执行程序需要按需装入,同时其执行代码可在多个执行程序间共享,节省了空间,提高了效率,具备很高的灵活性,得到越来越多程序员和用户的青睐.那么,在LINUX系统中有无这样的函数库呢? 答案是肯定的,LINUX的动态链接库不仅有,而且为数不少.在/lib目录下,就有许多以.so作后缀的文件,这

在Linux系统中文件(资源)和用户的管理

一个可执行二进制程序,被加载到内存,被内核调度到CPU上运行,这时候,就表现了一个进程.也可以说进程是程序的一个实例,是程序的动态表现. 在 Linux 系统中进程(process)是有属主的,也就是该进程以哪个用户的身份运行的.大家都知道,程序有输入和输出,也称这为程序IO.如果我们程序数据输入是磁盘.如,Web 服务器,接收用户的请求之后,把网页数据从磁盘中读入加工之后再把数据响应给用户.如果,发起Web 服务进程的用户没有读取该用户请求网页文件的权限.则无法响应用户的请求了.所以,文件(资