如何获得可迭代的类中的所有变量的列表?有点像locals(),但对于一个类
class Example(object):
bool143 = True
bool2 = True
blah = False
foo = True
foobar2000 = False
def as_list(self)
ret = []
for field in XXX:
if getattr(self, field):
ret.append(field)
return ",".join(ret)
Run Code Online (Sandbox Code Playgroud)
这应该回来了
>>> e = Example()
>>> e.as_list()
bool143, bool2, foo
Run Code Online (Sandbox Code Playgroud) 我给出了一个在ipython/jupyter笔记本中抛出错误的示例,但作为单个脚本运行正常.
import unittest
class Samples(unittest.TestCase):
def testToPow(self):
pow3 = 3**3
assert pow3==27
if __name__ == '__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
错误如下:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-7-232db94ae8b2> in <module>()
8
9 if __name__ == '__main__':
---> 10 unittest.main()
/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/main.pyc in __init__(self, module, defaultTest, argv, testRunner, testLoader, exit, verbosity, failfast, catchbreak, buffer)
92 self.testLoader = testLoader
93 self.progName = os.path.basename(argv[0])
---> 94 self.parseArgs(argv)
95 self.runTests()
96
/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/main.pyc in parseArgs(self, argv)
147 else:
148 self.testNames = (self.defaultTest,)
--> 149 self.createTests()
150 except getopt.error, …Run Code Online (Sandbox Code Playgroud) python python-2.7 ipython-notebook python-unittest jupyter-notebook
我有一个脚本可以执行各种操作并使用sys.argv访问参数,但是当脚本到达代码的unittest部分时,它说没有模块.我的脚本是:
class MyScript():
def __init__(self):
self.value = sys.argv[1]
def hello(self):
print self.value
def suite(self):
modules_to_test = ('external_sanity_onvif', 'starttest')
alltests = unittest.TestSuite()
for module in map(__import__, modules_to_test):
alltests.addTest(unittest.findTestCases(module))
return alltests
if __name__ == '__main__':
Run = MyScript()
Run.hello()
log_file = 'log_file.txt'
test_file = open(log_file, "w")
runner = unittest.TextTestRunner(test_file)
unittest.main(defaultTest='Run.suite', testRunner=runner)
Run Code Online (Sandbox Code Playgroud)
假设我./script.py Hello在命令行中输入.我得到的错误是:
AttributeError: 'module' object has no attribute 'Hello'
Run Code Online (Sandbox Code Playgroud)
如果我删除unittest模块,它的工作原理.此外,如果我删除testrunner日志并将其保留在:
unittest.main(defaultTest='Run.suite')
Run Code Online (Sandbox Code Playgroud)
这仍然不起作用.
谁能帮忙.
谢谢
我试过这个黑客,但它仍然试图阅读sys.argv.
project = sys.argv[4:]
sys.argv = sys.argv[0:4]
Run Code Online (Sandbox Code Playgroud)
我已经尝试了这一点,argv但它仍然厌倦了阅读额外的参数.
我有
class Foo():
function bar():
pass
function foobar():
pass
Run Code Online (Sandbox Code Playgroud)
而不是逐个执行每个功能,如下所示:
x = Foo()
x.bar()
x.foobar()
Run Code Online (Sandbox Code Playgroud)
是否有一种内置的方法来循环并执行它们在类中编写的顺序中的每个函数?