Python Nose需要2个参数

Python Nose需要2个参数,python,nose,Python,Nose,我做了鼻子测试: import nose from nose.tools import istest, nottest nose.run() path1 = "/some/my/path1/" path2 = "/some/my/path2/" @istest def compare_dir(path1, path2): my_bool = mytest, bool yield my_test, my_bool sub_path1 = path1 + "some_pa

我做了鼻子测试:

import nose
from nose.tools import istest, nottest
nose.run()
path1 = "/some/my/path1/"
path2 = "/some/my/path2/"

@istest
def compare_dir(path1, path2):
    my_bool = mytest, bool
    yield my_test, my_bool 
    sub_path1 = path1 + "some_path" 
    sub_path2 = path2 + "some_path"
    compare_dir(sub_path1, sub_path2)

def my_test(is_equal):
    assert is_equal, "Not equal!"
我有一个错误:

Traceback (most recent call last):
  File "/Python27/lib/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
TypeError: compare_dir() takes exactly 2 arguments (0 given)
我做错了什么?我已经为
compare\u dir
给出了两个参数。 我已经开始考试了

/path/to/my/test/my_test_name.py --tests=my_test_name

据我所知,这是因为您假设您的函数默认采用全局变量path1和path2,而在函数初始化级别,除非您显式定义它们,否则不会得到隐含值

你可以试着换衣服

def compare_dir(path1, path2):


这样,如果默认情况下未传递任何内容,则应采用全局值。

非常感谢<代码>def比较目录(path1=path1,path2=path2):这一个确实有效!但是为什么它不从4行和5行中取值呢?因为当你把这样的值放在一个函数中时,你说这就是你想要调用的函数中传递给它的任何东西。因此,它假设它们是仅在该函数中使用的全新变量。您可以在代码中使用
compare\u dir(path1,path2)
调用它,但默认情况下,函数开头定义的所有变量都是空的,需要填写。
def compare_dir(path1=path1, path2=path2):