相关疑难解决方法(0)

循环遍历python中类的所有成员变量

如何获得可迭代的类中的所有变量的列表?有点像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)

python

79
推荐指数
4
解决办法
7万
查看次数

无法在ipython/jupyter笔记本中运行unittest的主要功能

我给出了一个在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

13
推荐指数
1
解决办法
4821
查看次数

单元测试模块在脚本中时sys.argv [1]出现问题

我有一个脚本可以执行各种操作并使用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但它仍然厌倦了阅读额外的参数.

python unit-testing sys argv

11
推荐指数
2
解决办法
1万
查看次数

有没有办法循环并执行Python类中的所有函数?

我有

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)

是否有一种内置的方法来循环并执行它们在类中编写的顺序中的每个函数?

python reflection class

9
推荐指数
3
解决办法
1万
查看次数