首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >unittest.skipif()问题

unittest.skipif()问题
EN

Stack Overflow用户
提问于 2019-05-24 16:50:40
回答 1查看 783关注 0票数 1

我使用单元测试框架在类中运行一些测试。我还有一个名为connected_emulators的助手函数。如果条件为True,我想跳过test_get_emulator_device,就是这样。

我的问题是,在运行测试时,我会收到这样的消息:

代码语言:javascript
复制
def connected_emulators(self):
    try:
        subprocess.check_output(['adb', '-e', 'get-serialno'])
    except subprocess.CalledProcessError:
        return False
    return True
@unittest.skipIf(not(self.connected_emulators()), 'Expected failure, no 
emulators connected')  
def test_get_emulator_device(self):
    device = get_emulator_device()
    self.assertIsInstance(device, AndroidDevice)

输出:@unittest.skipIf(not(self.connected_emulators()),‘预期失败,没有模拟器连接’) NameError:未定义名称'self‘

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-24 17:11:00

当加载模块时,将计算@unittest.skipIf装饰器的参数,因为在定义方法时(在模块加载时)将应用装饰器。此时,没有测试类的实例,因此"self“没有任何意义。"self“仅在类方法中有意义。

您应该将connected_emulators方法作为全局作用域中的函数移出,这样您就可以在不需要测试类实例的情况下调用它。基于您发布的代码,我不认为它必须是您类的一种方法。

代码语言:javascript
复制
def connected_emulators():
    try:
        subprocess.check_output(['adb', '-e', 'get-serialno'])
    except subprocess.CalledProcessError:
        return False
    return True

class MyTestClass:
    @unittest.skipIf(not(connected_emulators()), 'Expected failure, no emulators connected')  
    def test_get_emulator_device(self):
        device = get_emulator_device()
        self.assertIsInstance(device, AndroidDevice)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56296701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档