Pytest测试是方法抽象

Pytest test is method abstract

我有一个抽象基础 class 和一个抽象方法。

从 abc 导入 ABC,抽象方法

class MyClass(ABC):

    @abstractmethod
    def my_method():
        pass

我想测试一下,如果我在没有创建该方法的情况下创建抽象基础 class 的子项,是否会出现错误。

我的第一个方法是查看如果我在函数中创建子项是否会发生错误。但是我一点错误都没有。

from abstract_method import MyClass

def test_my_class_without_my_method_error():
    class MyChildClass(MyClass):
        def my_method_with_spelling_error():
            print("do something")

有没有办法测试一个方法是否是抽象的?

你可以查看这个例子。

myabc.py

from abc import ABC, abstractmethod

class MyABC(ABC):
    @abstractmethod
    def my_method():
        pass

test.py

from myabc import *

def test_function():
    class MyChild(MyABC):
        def my_method_new():
            pass
    c = MyChild()

这会在 c = MyChild() 处引发错误 (TypeError: Can't instantiate abstract class MyChild with abstract methods my_method)。这意味着在实例化 class.

之前不会出现错误